@antscorp/antsomi-ui 1.3.5-beta.828 → 1.3.5-beta.829
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/components/molecules/AddDynamicContent/components/DisplayFormat/DisplayFormat.d.ts +0 -1
- package/es/components/molecules/TagifyInput/TagifyInput.js +123 -24
- package/es/components/molecules/TagifyInput/utils.d.ts +26 -0
- package/es/components/molecules/TagifyInput/utils.js +41 -0
- package/es/components/template/TemplateListing/Loadable.d.ts +0 -1
- package/es/locales/ja/google-sheet.json +44 -44
- package/es/locales/vi/google-sheet.json +3 -3
- package/package.json +1 -1
|
@@ -17,7 +17,7 @@ import '@yaireo/tagify/dist/tagify.css';
|
|
|
17
17
|
// Styled
|
|
18
18
|
import { TagTextArea, TagifyWrapper, WrapperPlaceHolder } from './styled';
|
|
19
19
|
// Utils
|
|
20
|
-
import { parseTagStringToTagify, convertInputStringToOriginal, emojiManufacturer, getEmojiTag, isPersonalizeTagType, generateTagContent, unescapeString, isValidTagType, hasLineBreak, } from './utils';
|
|
20
|
+
import { parseTagStringToTagify, convertInputStringToOriginal, emojiManufacturer, getEmojiTag, isPersonalizeTagType, generateTagContent, unescapeString, isValidTagType, hasLineBreak, selectTextRange, } from './utils';
|
|
21
21
|
import { acceptablePatternChecking, detectURLRegex, getCachedRegex, getPersonalizeTagInfo, patternHandlers, } from './patternHandlers';
|
|
22
22
|
// Constants
|
|
23
23
|
import { DETECT_LINK, EMOJI, INVALID_TAG, PERSONALIZE_PTN, PROMOTION_CODE, READONLY_TAG, SHORT_LINK, SHORT_LINK_PTN, defaultCssVariables, tagifyDefaultProps, } from './constants';
|
|
@@ -32,6 +32,7 @@ const TagifyInput = forwardRef((props, ref) => {
|
|
|
32
32
|
const tagifyRef = useRef(null);
|
|
33
33
|
const tagifyWrapperRef = useRef(null);
|
|
34
34
|
const placeholderRef = useRef(null);
|
|
35
|
+
const lastRange = useRef(null);
|
|
35
36
|
// Memoizations
|
|
36
37
|
const cssVariablesMemoized = useMemo(() => _.assign({}, defaultCssVariables, cssTagifyVariables || {}), [cssTagifyVariables]);
|
|
37
38
|
// Only run in the first render
|
|
@@ -47,6 +48,102 @@ const TagifyInput = forwardRef((props, ref) => {
|
|
|
47
48
|
return content;
|
|
48
49
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
49
50
|
}, []);
|
|
51
|
+
const onSaveLastRange = useCallback((newRange) => {
|
|
52
|
+
if (newRange) {
|
|
53
|
+
lastRange.current = newRange;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
const selection = window.getSelection();
|
|
57
|
+
if (selection?.rangeCount) {
|
|
58
|
+
const range = selection.getRangeAt(0);
|
|
59
|
+
lastRange.current = range;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}, []);
|
|
63
|
+
const onInjectTagAtCaret = useCallback((newTag, addRangeAfterInjected) => {
|
|
64
|
+
try {
|
|
65
|
+
if (!tagifyRef.current) {
|
|
66
|
+
throw new Error('Tagify instance is not initialized');
|
|
67
|
+
}
|
|
68
|
+
const { settings, DOM } = tagifyRef.current;
|
|
69
|
+
const { empty } = settings.classNames;
|
|
70
|
+
const selection = window.getSelection();
|
|
71
|
+
// In case not have the selection yet or lost the selection,
|
|
72
|
+
if (!selection?.rangeCount) {
|
|
73
|
+
// need to restore the last range before inject a new tag if the last range exists
|
|
74
|
+
if (lastRange.current) {
|
|
75
|
+
selection?.removeAllRanges();
|
|
76
|
+
selection?.addRange(lastRange.current);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
// If the last range is lost, need to select the last text node of the input
|
|
80
|
+
const { input: inputElement } = tagifyRef.current.DOM;
|
|
81
|
+
if (inputElement) {
|
|
82
|
+
// Get all child nodes that are of type TEXT_NODE
|
|
83
|
+
const textNodes = Array.from(inputElement.childNodes).filter((node) => node.nodeType === Node.TEXT_NODE);
|
|
84
|
+
// In case have text nodes
|
|
85
|
+
// -> need to place the caret at the end of the last text
|
|
86
|
+
if (textNodes.length) {
|
|
87
|
+
const lastTextNode = textNodes[textNodes.length - 1];
|
|
88
|
+
if (lastTextNode?.textContent) {
|
|
89
|
+
const textNodeLength = lastTextNode.textContent.length;
|
|
90
|
+
// Place the caret at the end of the last text
|
|
91
|
+
selectTextRange(lastTextNode, textNodeLength, textNodeLength);
|
|
92
|
+
const instancePrototype = Object.getPrototypeOf(tagifyRef.current);
|
|
93
|
+
// Update the selection of the Tagify instance
|
|
94
|
+
if (_.has(instancePrototype, 'setStateSelection')) {
|
|
95
|
+
tagifyRef.current.setStateSelection();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else if (DOM?.scope?.classList?.contains(empty)) {
|
|
100
|
+
// In case no text nodes and the input is empty
|
|
101
|
+
selectTextRange(inputElement, 0, 0);
|
|
102
|
+
const instancePrototype = Object.getPrototypeOf(tagifyRef.current);
|
|
103
|
+
// Update the selection of the Tagify instance
|
|
104
|
+
if (_.has(instancePrototype, 'setStateSelection')) {
|
|
105
|
+
tagifyRef.current.setStateSelection();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Inject the new tag
|
|
112
|
+
tagifyRef.current.injectAtCaret(newTag);
|
|
113
|
+
// Need to remove the empty class immediately after tag added to make the valid the DOM
|
|
114
|
+
tagifyRef.current.toggleClass(empty, false);
|
|
115
|
+
if (selection?.rangeCount) {
|
|
116
|
+
const range = selection.getRangeAt(0);
|
|
117
|
+
if (addRangeAfterInjected) {
|
|
118
|
+
// Need to re-select to keep the caret position
|
|
119
|
+
selection.removeAllRanges();
|
|
120
|
+
selection.addRange(range);
|
|
121
|
+
}
|
|
122
|
+
// Save of the last range to restore it in case lost the selection
|
|
123
|
+
// E.g user blur of the input
|
|
124
|
+
// and then click direct to the popup without focus input to add new tag
|
|
125
|
+
onSaveLastRange(range);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
// eslint-disable-next-line no-console
|
|
130
|
+
console.warn(error);
|
|
131
|
+
}
|
|
132
|
+
}, [onSaveLastRange]);
|
|
133
|
+
const placeCaretAfterNode = useCallback((node) => {
|
|
134
|
+
if (!tagifyRef.current) {
|
|
135
|
+
throw new Error('Tagify instance is not initialized');
|
|
136
|
+
}
|
|
137
|
+
const selection = window.getSelection();
|
|
138
|
+
// Only place the caret if there is a range selection
|
|
139
|
+
if (selection?.rangeCount) {
|
|
140
|
+
tagifyRef.current.placeCaretAfterNode(node);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
// eslint-disable-next-line no-console
|
|
144
|
+
console.warn('Cannot place caret after node', { selection, instance: tagifyRef.current });
|
|
145
|
+
}
|
|
146
|
+
}, []);
|
|
50
147
|
const onOutputData = useCallback((newValue) => {
|
|
51
148
|
if (escapeHTML) {
|
|
52
149
|
const unescapedValue = unescapeString(newValue);
|
|
@@ -69,14 +166,7 @@ const TagifyInput = forwardRef((props, ref) => {
|
|
|
69
166
|
return;
|
|
70
167
|
// For case add new common emoji
|
|
71
168
|
if (typeof newTag === 'string') {
|
|
72
|
-
|
|
73
|
-
// Need to re-select to keep the caret position
|
|
74
|
-
const selection = window.getSelection();
|
|
75
|
-
if (selection?.rangeCount) {
|
|
76
|
-
const range = selection.getRangeAt(0);
|
|
77
|
-
selection.removeAllRanges();
|
|
78
|
-
selection.addRange(range);
|
|
79
|
-
}
|
|
169
|
+
onInjectTagAtCaret(newTag, true);
|
|
80
170
|
// Change data out
|
|
81
171
|
const inputValue = tagifyRef.current.getInputValue();
|
|
82
172
|
const convertedValue = convertInputStringToOriginal(inputValue);
|
|
@@ -95,14 +185,14 @@ const TagifyInput = forwardRef((props, ref) => {
|
|
|
95
185
|
// Create new tag
|
|
96
186
|
const newTagEle = tagifyRef.current.createTagElem(newTag);
|
|
97
187
|
// Add new tag
|
|
98
|
-
|
|
188
|
+
onInjectTagAtCaret(newTagEle);
|
|
99
189
|
// Change data out before place the caret to keep valid caret positioning
|
|
100
190
|
const inputValue = tagifyRef.current.getInputValue();
|
|
101
191
|
const convertedValue = convertInputStringToOriginal(inputValue);
|
|
102
192
|
onOutputData(convertedValue);
|
|
103
193
|
// NOTE: place to refactor if not need to add space after the tag
|
|
104
194
|
const spaceEle = tagifyRef.current.insertAfterTag(newTagEle, ' '); // <- adds space after the tag
|
|
105
|
-
|
|
195
|
+
placeCaretAfterNode(spaceEle); // <- place the caret in the space after the tag
|
|
106
196
|
}
|
|
107
197
|
}
|
|
108
198
|
else {
|
|
@@ -128,13 +218,13 @@ const TagifyInput = forwardRef((props, ref) => {
|
|
|
128
218
|
const convertedValue = convertInputStringToOriginal(inputValue);
|
|
129
219
|
onOutputData(convertedValue);
|
|
130
220
|
}
|
|
131
|
-
|
|
221
|
+
placeCaretAfterNode(spaceEle); // <- restore the caret after the edited tag
|
|
132
222
|
}
|
|
133
223
|
else {
|
|
134
224
|
throw new Error('Tagify instance is not initialized');
|
|
135
225
|
}
|
|
136
226
|
},
|
|
137
|
-
}), [onOutputData]);
|
|
227
|
+
}), [onInjectTagAtCaret, onOutputData, placeCaretAfterNode]);
|
|
138
228
|
const onTagItemClick = useCallback((event) => {
|
|
139
229
|
event.stopPropagation();
|
|
140
230
|
event.preventDefault();
|
|
@@ -174,9 +264,11 @@ const TagifyInput = forwardRef((props, ref) => {
|
|
|
174
264
|
const { tagify } = event.detail;
|
|
175
265
|
const inputValue = tagify.getInputValue();
|
|
176
266
|
const convertedValue = convertInputStringToOriginal(inputValue);
|
|
177
|
-
|
|
267
|
+
if (!_.isEqual(initialValue, convertedValue)) {
|
|
268
|
+
onOutputData(convertedValue);
|
|
269
|
+
}
|
|
178
270
|
}
|
|
179
|
-
}, [onOutputData]);
|
|
271
|
+
}, [initialValue, onOutputData]);
|
|
180
272
|
const customizeTag = useCallback((tagData, tagify) => {
|
|
181
273
|
const { value, collection, label, type } = tagData;
|
|
182
274
|
const { settings } = tagify;
|
|
@@ -384,10 +476,8 @@ const TagifyInput = forwardRef((props, ref) => {
|
|
|
384
476
|
try {
|
|
385
477
|
const { input: inputElement } = tagifyRef.current.DOM;
|
|
386
478
|
if (inputElement) {
|
|
387
|
-
const
|
|
388
|
-
const cacheLastRange =
|
|
389
|
-
selectionStarting?.rangeCount &&
|
|
390
|
-
selectionStarting?.getRangeAt(0);
|
|
479
|
+
const selection = window.getSelection();
|
|
480
|
+
const cacheLastRange = selection?.getRangeAt && selection?.rangeCount && selection?.getRangeAt(0);
|
|
391
481
|
const minLengthValidURL = 8; // -> Because of valid URL should be "https://"
|
|
392
482
|
// Get all child nodes that are of type TEXT_NODE and contain an URL
|
|
393
483
|
const nodesURL = Array.from(inputElement.childNodes).filter((node) => {
|
|
@@ -396,6 +486,8 @@ const TagifyInput = forwardRef((props, ref) => {
|
|
|
396
486
|
return false;
|
|
397
487
|
// Only check nodes that contain at least 8 characters
|
|
398
488
|
if (node.textContent && node.textContent.length >= minLengthValidURL) {
|
|
489
|
+
// reset the regex's lastIndex before each execution
|
|
490
|
+
detectURLRegex.lastIndex = 0;
|
|
399
491
|
return detectURLRegex.test(node.textContent);
|
|
400
492
|
}
|
|
401
493
|
return false;
|
|
@@ -445,11 +537,18 @@ const TagifyInput = forwardRef((props, ref) => {
|
|
|
445
537
|
}
|
|
446
538
|
}
|
|
447
539
|
});
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
540
|
+
if (selection) {
|
|
541
|
+
if (cacheLastRange instanceof Range) {
|
|
542
|
+
// Need to restore the selection after execution all process to replace URL to Tag
|
|
543
|
+
// to maintain valid caret
|
|
544
|
+
selection.removeAllRanges();
|
|
545
|
+
selection.addRange(cacheLastRange);
|
|
546
|
+
}
|
|
547
|
+
else {
|
|
548
|
+
// In case lost the selection not need to restore
|
|
549
|
+
// Reset the selection to clear and prepare the valid caret to add the next tag at fn: "onAddNewTag"
|
|
550
|
+
selection?.removeAllRanges();
|
|
551
|
+
}
|
|
453
552
|
}
|
|
454
553
|
}
|
|
455
554
|
}
|
|
@@ -79,3 +79,29 @@ export declare const isValidTagType: (str: string) => boolean;
|
|
|
79
79
|
* @returns boolean
|
|
80
80
|
*/
|
|
81
81
|
export declare const hasLineBreak: (str: string) => boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Selects a range of text within a given text node.
|
|
84
|
+
*
|
|
85
|
+
* @param {Node} textNode - The text node containing the text to be selected.
|
|
86
|
+
* @param {number} start - The starting index of the selection within the text node.
|
|
87
|
+
* @param {number} end - The ending index of the selection within the text node.
|
|
88
|
+
*
|
|
89
|
+
* @throws {Error} If there's an issue creating the range or applying the selection.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* const paragraph = document.querySelector('p');
|
|
93
|
+
* const textNode = paragraph.firstChild;
|
|
94
|
+
* selectTextRange(textNode, 5, 10);
|
|
95
|
+
*
|
|
96
|
+
* @description
|
|
97
|
+
* This function creates a new range from the given start and end positions within
|
|
98
|
+
* the provided text node. It then applies this range to the current window selection,
|
|
99
|
+
* effectively selecting the specified text. If any errors occur during this process,
|
|
100
|
+
* they are caught and logged to the console along with the input parameters.
|
|
101
|
+
*
|
|
102
|
+
* Note: This function will only visually select the text. It does not copy the text
|
|
103
|
+
* or perform any actions on it. The selection may not be visible if the containing
|
|
104
|
+
* element is not focusable or if the browser prevents programmatic selection for
|
|
105
|
+
* security reasons.
|
|
106
|
+
*/
|
|
107
|
+
export declare function selectTextRange(textNode: Node, start: number, end: number): void;
|
|
@@ -457,3 +457,44 @@ export const isValidTagType = (str) => Object.values(TAG_TYPE).includes(str);
|
|
|
457
457
|
* @returns boolean
|
|
458
458
|
*/
|
|
459
459
|
export const hasLineBreak = (str) => str.includes('\n');
|
|
460
|
+
/**
|
|
461
|
+
* Selects a range of text within a given text node.
|
|
462
|
+
*
|
|
463
|
+
* @param {Node} textNode - The text node containing the text to be selected.
|
|
464
|
+
* @param {number} start - The starting index of the selection within the text node.
|
|
465
|
+
* @param {number} end - The ending index of the selection within the text node.
|
|
466
|
+
*
|
|
467
|
+
* @throws {Error} If there's an issue creating the range or applying the selection.
|
|
468
|
+
*
|
|
469
|
+
* @example
|
|
470
|
+
* const paragraph = document.querySelector('p');
|
|
471
|
+
* const textNode = paragraph.firstChild;
|
|
472
|
+
* selectTextRange(textNode, 5, 10);
|
|
473
|
+
*
|
|
474
|
+
* @description
|
|
475
|
+
* This function creates a new range from the given start and end positions within
|
|
476
|
+
* the provided text node. It then applies this range to the current window selection,
|
|
477
|
+
* effectively selecting the specified text. If any errors occur during this process,
|
|
478
|
+
* they are caught and logged to the console along with the input parameters.
|
|
479
|
+
*
|
|
480
|
+
* Note: This function will only visually select the text. It does not copy the text
|
|
481
|
+
* or perform any actions on it. The selection may not be visible if the containing
|
|
482
|
+
* element is not focusable or if the browser prevents programmatic selection for
|
|
483
|
+
* security reasons.
|
|
484
|
+
*/
|
|
485
|
+
export function selectTextRange(textNode, start, end) {
|
|
486
|
+
try {
|
|
487
|
+
const range = document.createRange();
|
|
488
|
+
range.setStart(textNode, start);
|
|
489
|
+
range.setEnd(textNode, end);
|
|
490
|
+
const selection = window.getSelection();
|
|
491
|
+
if (selection) {
|
|
492
|
+
selection.removeAllRanges();
|
|
493
|
+
selection.addRange(range);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
catch (error) {
|
|
497
|
+
// eslint-disable-next-line no-console
|
|
498
|
+
console.log('Error selecting text range', error, { textNode, start, end });
|
|
499
|
+
}
|
|
500
|
+
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"_ACT_CANCEL": "キャンセル",
|
|
33
33
|
"_ACT_CHANGE": "変化",
|
|
34
34
|
"_ACT_CHANGE_ASSIGN_GROUP": "割り当てグループの変更",
|
|
35
|
-
"_ACT_CHANGE_FORMAT": "
|
|
35
|
+
"_ACT_CHANGE_FORMAT": "フォーマットの変更",
|
|
36
36
|
"_ACT_CHANGE_PORTAL": "変更ポータル",
|
|
37
37
|
"_ACT_CHANGE_TEMPLATE": "テンプレートの変更",
|
|
38
38
|
"_ACT_CHART_TYPE": "グラフの種類",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"_ACT_COPY_TO_CLIPBOARD": "クリップボードにコピー",
|
|
48
48
|
"_ACT_CREATE": "作成する",
|
|
49
49
|
"_ACT_CREATE_ASSIGN_ROLE": "役割の作成と割り当て",
|
|
50
|
-
"_ACT_CREATE_NEW_EVENT_ACTION": "
|
|
50
|
+
"_ACT_CREATE_NEW_EVENT_ACTION": "新しいイベントアクションの作成",
|
|
51
51
|
"_ACT_CREATE_NEW_EVENT_CATEGORY": "新しいイベント カテゴリを作成する",
|
|
52
52
|
"_ACT_CREATE_NEW_MODEL": "新しいモデルを作成する",
|
|
53
53
|
"_ACT_CUSTOMER_SEGMENT": "顧客セグメント",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"_ACT_EXPORT": "輸出",
|
|
67
67
|
"_ACT_FORECAST": "予報",
|
|
68
68
|
"_TILT_FORECAST": "の予測結果",
|
|
69
|
-
"_SEG_RESULT_MESS_1": "
|
|
69
|
+
"_SEG_RESULT_MESS_1": "選択した時間範囲が有効期間外であるため、データが不十分です",
|
|
70
70
|
"_BTN_CREATE_SEG": "セグメントの作成",
|
|
71
71
|
"_ACT_GO_BACK": "戻る",
|
|
72
72
|
"_ACT_HAVE_ATTRIBUTE": "属性を持つ",
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"_ACT_TABLE_DETAIL": "テーブルの詳細",
|
|
129
129
|
"_ACT_UNCHECK_ALL": "すべてのチェックを外します",
|
|
130
130
|
"_ACT_UPDATE": "アップデート",
|
|
131
|
-
"_ACT_UPDATE_END_DATE": "
|
|
131
|
+
"_ACT_UPDATE_END_DATE": "終了日を更新する",
|
|
132
132
|
"_ACT_UPLOAD": "アップロード",
|
|
133
133
|
"_ACT_VARIANT_PRIORITY": "バリアントの優先順位",
|
|
134
134
|
"_ACT_VIEW_ALL": "すべて見る",
|
|
@@ -359,7 +359,7 @@
|
|
|
359
359
|
"_DAY_SA": "サ",
|
|
360
360
|
"_DAY_SU": "スー",
|
|
361
361
|
"_DAY_TH": "Th",
|
|
362
|
-
"_DAY_TU": "
|
|
362
|
+
"_DAY_TU": "土",
|
|
363
363
|
"_DAY_WE": "私たちは",
|
|
364
364
|
"_DECRYPT_DURATION_LOGIN_LOGOUT": "ログイン/ログアウト",
|
|
365
365
|
"_DECRYPT_DURATION_PAGE_REFRESH": "ページの更新",
|
|
@@ -415,17 +415,17 @@
|
|
|
415
415
|
"_EVENT_CLICK_WEB_PUSH": "{{customer_name}} さんが Journey {{journey_name}} からのウェブ プッシュ通知をクリックしました",
|
|
416
416
|
"_EVENT_CLICK_ZALO_CHAT": "{{customer_name}} さんが Journey {{journey_name}} からの Zalo メッセージをクリックしました",
|
|
417
417
|
"_EVENT_DES_ADD_TO_CART_PRODUCT": "{{customer_name}} さんが商品 {{product_name}} をショッピング カートに追加しました",
|
|
418
|
-
"_EVENT_DES_BROWSING_PRODUCT_LIST_FILTER": "
|
|
418
|
+
"_EVENT_DES_BROWSING_PRODUCT_LIST_FILTER": "商品をフィルタリングした後に返された結果を {{customer_name}} が閲覧しました",
|
|
419
419
|
"_EVENT_DES_BROWSING_PRODUCT_SEARCH": "{{customer_name}} さんがキーワード {{keyword}} の検索から返された商品リストを閲覧しました",
|
|
420
420
|
"_EVENT_DES_CAILL_IN_CALL": "{{customer_name}} がカスタマー サービスに電話しました",
|
|
421
421
|
"_EVENT_DES_CALL_OUT_CALL": "{{customer_name}} がカスタマー サービスから電話を受けました",
|
|
422
422
|
"_EVENT_DES_CANCEL_ORDER": "{{customer_name}} が注文 {{order_id}} をキャンセルしました",
|
|
423
|
-
"_EVENT_DES_CHAT_CONVERSATION": "{{customer_name}}
|
|
423
|
+
"_EVENT_DES_CHAT_CONVERSATION": "{{customer_name}} が {{channel_name}} 経由でカスタマー サービスとチャットしました",
|
|
424
424
|
"_EVENT_DES_CHECKOUT_CART_PRODUCT": "{{customer_name}} が注文プロセスを開始しました (トランザクションが作成されました)",
|
|
425
425
|
"_EVENT_DES_CLICK_ADVERTISING": "{{customer_name}} さんがキャンペーン {{campaign_name}} をクリックしました",
|
|
426
426
|
"_EVENT_DES_CLICK_EMAIL_ADVERTISING": "{{customer_name}} が広告 {{advertising_name}} のメールをクリックしました",
|
|
427
427
|
"_EVENT_DES_CLICK_PRODUCT": "{{customer_name}} さんが商品 {{product_name}} をクリックしました",
|
|
428
|
-
"_EVENT_DES_CLICK_TRACKING_ADVERTISING": "{{customer_name}}
|
|
428
|
+
"_EVENT_DES_CLICK_TRACKING_ADVERTISING": "{{customer_name}} さんがトラッキング広告 {{advertising_name}} をクリックしました",
|
|
429
429
|
"_EVENT_DES_IDENTIFY_USER": "匿名訪問者プロファイル {{user_id}} は、この顧客プロファイルに関連付けられていました。",
|
|
430
430
|
"_EVENT_DES_IMPRESSION_ADVERTISING": "キャンペーン {{campaign_name}} は {{customer_name}} に送信されました",
|
|
431
431
|
"_EVENT_DES_PURCHASE_TRANSACTION": "{{customer_name}} が、{{num_of_products}} 個の製品 {{store_link}} のトランザクション購入 ID {{order_id}} を実行しました",
|
|
@@ -463,7 +463,7 @@
|
|
|
463
463
|
"_EVENT_IMPRESSION_WEB_PUSH": "ジャーニー {{journey_name}} はウェブ プッシュ通知経由で {{customer_name}} に配信されました ",
|
|
464
464
|
"_EVENT_IMPRESSION_ZALO_CHAT": "キャンペーン {{campaign_name}} からの Zalo メッセージが {{customer_name}} に送信されました",
|
|
465
465
|
"_EVENT_INFO_EARN_POINT": "ポイントを獲得する",
|
|
466
|
-
"_EVENT_INFO_LOYALTY_ID": "ロイヤルティ
|
|
466
|
+
"_EVENT_INFO_LOYALTY_ID": "ロイヤルティID",
|
|
467
467
|
"_EVENT_INFO_NAME": "名前",
|
|
468
468
|
"_EVENT_INFO_POINT": "ポイント",
|
|
469
469
|
"_EVENT_INFO_REDEEM_POINT": "ポイントを引き換える",
|
|
@@ -515,7 +515,7 @@
|
|
|
515
515
|
"_IMPORT_FILE_META_INCORRECT": "不正なメタデータ",
|
|
516
516
|
"_IMPORT_FILE_NOT_FOUND": "ファイルが見つかりません",
|
|
517
517
|
"_IMPORT_INVALID_FILE": "無効なファイル",
|
|
518
|
-
"_IMPORT_LIMIT_COLUMNS_SIZE": "
|
|
518
|
+
"_IMPORT_LIMIT_COLUMNS_SIZE": "許可された制限を超えたファイル列",
|
|
519
519
|
"_IMPORT_LIMIT_ROWS_SIZE": "ファイル行が許容制限を超えています",
|
|
520
520
|
"_IMPORT_MAPPING_FIELDS_ERROR": "フィールドのマッピングエラー",
|
|
521
521
|
"_IMPORT_MISSING_REQUIRED_FIELD": "必須フィールドが欠落しています",
|
|
@@ -713,7 +713,7 @@
|
|
|
713
713
|
"_NODE_GO_TO": "に行く",
|
|
714
714
|
"_NODE_IF_ELSE": "それ以外の場合は、次のことを確認してください",
|
|
715
715
|
"_NODE_IF_MAIN": "どうかを確認してください",
|
|
716
|
-
"_NODE_IF_NO": "
|
|
716
|
+
"_NODE_IF_NO": "それ以外の場合は、次のサイトにアクセスしてください",
|
|
717
717
|
"_NODE_IF_THEN": "If/then 分岐",
|
|
718
718
|
"_NODE_IF_THEN_TITL_NO": "いいえ",
|
|
719
719
|
"_NODE_IF_THEN_TITL_YES": "はい",
|
|
@@ -725,7 +725,7 @@
|
|
|
725
725
|
"_NOTI_ADD_CRITERIA": "少なくとも 1 つの条件を追加してください",
|
|
726
726
|
"_NOTI_ADD_EVENT_BEFORE_ASSIGN_ATTRIBUTE": "イベント属性と参照オブジェクトを割り当てる前に、ソースにイベントを追加する必要があります",
|
|
727
727
|
"_NOTI_ALERT_EDIT_DESTINATION": "この宛先を編集すると、他の機能の入力に影響します",
|
|
728
|
-
"_NOTI_AM_BEING_COMPUTED": "
|
|
728
|
+
"_NOTI_AM_BEING_COMPUTED": "このモデルは計算中です。構築プロセスが完了するまで一部のフィールドを変更できません",
|
|
729
729
|
"_NOTI_ASSIGN_ATTRIBUTE_ERROR": "属性の割り当てエラー",
|
|
730
730
|
"_NOTI_ATTR_HAS_BEEN_REMOVE": "属性が削除されました",
|
|
731
731
|
"_NOTI_ATTRIBUTE_BEING_COMPUTED": "この属性は計算中です。構築プロセスが完了するまで一部のフィールドは変更できません",
|
|
@@ -925,7 +925,7 @@
|
|
|
925
925
|
"_TAB_INFORMATION_FIELD": "情報フィールド",
|
|
926
926
|
"_TAB_JOURNEY": "旅",
|
|
927
927
|
"_TAB_METRIC": "メトリック",
|
|
928
|
-
"_TAB_MODEL_DIAGRAM": "
|
|
928
|
+
"_TAB_MODEL_DIAGRAM": "ダイアグラム",
|
|
929
929
|
"_TAB_MODEL_FIELD": "フィールド",
|
|
930
930
|
"_TAB_OBECT_REFERENCE": "オブジェクトリファレンス",
|
|
931
931
|
"_TAB_OBJECT_ATTRIBUTE": "属性",
|
|
@@ -1018,7 +1018,7 @@
|
|
|
1018
1018
|
"_TITL_COMPRESS_FILE": "ファイルを圧縮する",
|
|
1019
1019
|
"_TITL_COMPUTE_SCHEDULE": "コンピューティングスケジュール",
|
|
1020
1020
|
"_TITL_COMPUTE_TIME_RANGE": "計算時間範囲",
|
|
1021
|
-
"_TITL_COMPUTE_WITH_CONDITION": "
|
|
1021
|
+
"_TITL_COMPUTE_WITH_CONDITION": "以下の条件で計算してください",
|
|
1022
1022
|
"_TITL_COMPUTED_ATTR_TYPE": "計算された属性のタイプ",
|
|
1023
1023
|
"_TITL_CONFIGURE_FIELD": "フィールドの構成",
|
|
1024
1024
|
"_TITL_CONFIGURE_LAYOUT_VARIABLE": "レイアウト変数を設定する",
|
|
@@ -1028,7 +1028,7 @@
|
|
|
1028
1028
|
"_TITL_CUSTOMER_CONVERSION": "顧客変換",
|
|
1029
1029
|
"_TITL_VISITOR_CONVERSION": "訪問者のコンバージョン",
|
|
1030
1030
|
"_TITL_CURRENCY": "通貨",
|
|
1031
|
-
"_TITL_CURRENCY_NUMBER_DEFAULT_FORMAT": "
|
|
1031
|
+
"_TITL_CURRENCY_NUMBER_DEFAULT_FORMAT": "通貨と数字",
|
|
1032
1032
|
"_TITL_CURRENCY_SETTING": "通貨設定",
|
|
1033
1033
|
"_TITL_CURRENT_ATTRIBUTE": "BO の属性",
|
|
1034
1034
|
"_TITL_CURRENT_PAGE": "現在のページ",
|
|
@@ -1052,7 +1052,7 @@
|
|
|
1052
1052
|
"_TITL_DELIVERED": "納品済み",
|
|
1053
1053
|
"_TITL_DELIVERED_PROBABILITY": "配信確率",
|
|
1054
1054
|
"_TITL_DELIVERY_ALGORITHM": "配信アルゴリズム",
|
|
1055
|
-
"_TITL_DELIVERY_DETAIL": "
|
|
1055
|
+
"_TITL_DELIVERY_DETAIL": "配送詳細",
|
|
1056
1056
|
"_TITL_DELIVERY_PERFORMANCE": "配信パフォーマンス",
|
|
1057
1057
|
"_TITL_DELIVERY_RATE": "配送料",
|
|
1058
1058
|
"_TITL_DELIVERY_RESULT": "納品実績",
|
|
@@ -1088,7 +1088,7 @@
|
|
|
1088
1088
|
"_TITL_EVENT_ACTION_NAME": "イベントアクション名",
|
|
1089
1089
|
"_TITL_EVENT_ATTRIBUTE": "イベント属性",
|
|
1090
1090
|
"_TITL_EVENT_CATEGORY": "イベントカテゴリー",
|
|
1091
|
-
"_TITL_EVENT_CATEGORY_CODE": "
|
|
1091
|
+
"_TITL_EVENT_CATEGORY_CODE": "イベントカテゴリーコード",
|
|
1092
1092
|
"_TITL_EVENT_CATEGORY_NAME": "イベントカテゴリ名",
|
|
1093
1093
|
"_TITL_EVENT_INFO": "イベント情報",
|
|
1094
1094
|
"_TITL_EVENT_INTERNAL_NAME": "イベントの内部名",
|
|
@@ -1203,7 +1203,7 @@
|
|
|
1203
1203
|
"_TITL_ROW_ACCESS": "行アクセス",
|
|
1204
1204
|
"_TITL_ALL_ROW": "すべての行",
|
|
1205
1205
|
"_TITL_SPECIFIED_ROW": "指定された行",
|
|
1206
|
-
"_TITL_COLUMN_ACCESS": "
|
|
1206
|
+
"_TITL_COLUMN_ACCESS": "列アクセス",
|
|
1207
1207
|
"_TITL_ALL_COLUMN": "すべての列",
|
|
1208
1208
|
"_TITL_SPECIFIED_COLUMN": "指定された列",
|
|
1209
1209
|
"_TITL_COLUMN_SELECTED": "選択された列",
|
|
@@ -1217,7 +1217,7 @@
|
|
|
1217
1217
|
"_TITL_ORIGINAL_NAME": "オリジナル",
|
|
1218
1218
|
"_TITL_PAGE_DOWNLOAD": "ページのダウンロード",
|
|
1219
1219
|
"_TITL_PERCENTAGE": "パーセンテージ",
|
|
1220
|
-
"_TITL_PERCENTAGE_SETTING": "
|
|
1220
|
+
"_TITL_PERCENTAGE_SETTING": "パーセンテージ設定",
|
|
1221
1221
|
"_TITL_PERFORM_EVENT": "イベントを行う",
|
|
1222
1222
|
"_TITL_PERSONALIZATION_CODE": "コードをマージ",
|
|
1223
1223
|
"_TITL_PERSONALIZATION_TAG": "タグを結合",
|
|
@@ -1335,7 +1335,7 @@
|
|
|
1335
1335
|
"_USER_GUIDE_AUDIDENCE_PARENT_NODE": "親ノードからの {{percent}} 視聴者",
|
|
1336
1336
|
"_USER_GUIDE_CATALOG_CLOUD": "データをクラウド アプリから当社のシステムに効果的に同期すると、すべてのフラグメント データを相互接続して、ビジネス運営の 1 つの詳細な概要を得ることができます。",
|
|
1337
1337
|
"_USER_GUIDE_CATALOG_MOBILE_APP": "ビジネス モバイル アプリをデータ ソースとして接続し、ユーザーが製品やアプリとどのようにやり取りしているかを確認します。",
|
|
1338
|
-
"_USER_GUIDE_CATALOG_SERVER": "
|
|
1338
|
+
"_USER_GUIDE_CATALOG_SERVER": "データをサーバーから当社のシステムに直接送信することで、当社の分析ツールの多くを使用して顧客と業績をより深く理解できるようになります。",
|
|
1339
1339
|
"_USER_GUIDE_CATALOG_WEBSITE": "ビジネス Web サイトをデータ ソースとして接続し、製品に対するユーザーの意図に関する驚くべき洞察を発見します。",
|
|
1340
1340
|
"_USER_GUIDE_CHOOOSE_ATTR_DISPLAY": "顧客/訪問者の各プロファイルに表示される属性を選択します",
|
|
1341
1341
|
"_USER_GUIDE_CHOOSE_EVENT_ATTRIBUTE_OBJECT": "イベント属性とオブジェクトの選択",
|
|
@@ -1356,7 +1356,7 @@
|
|
|
1356
1356
|
"_USER_GUIDE_EDIT_NODE": "ここで選択したノードのコンテンツを編集します",
|
|
1357
1357
|
"_USER_GUIDE_ENCRYPTED_INFO": "暗号化された情報",
|
|
1358
1358
|
"_USER_GUIDE_ENTER_VALUE": "値を入力してください",
|
|
1359
|
-
"_USER_GUIDE_EVENT_ATTR_OBJECT": "
|
|
1359
|
+
"_USER_GUIDE_EVENT_ATTR_OBJECT": "イベント属性とオブジェクトを選択する ",
|
|
1360
1360
|
"_USER_GUIDE_EVENT_TEMPLATE": "イベントテンプレートの選択",
|
|
1361
1361
|
"_USER_GUIDE_FOR_ASSIGN": "割り当て用",
|
|
1362
1362
|
"_USER_GUIDE_FOR_CREATE": "作成用",
|
|
@@ -1404,7 +1404,7 @@
|
|
|
1404
1404
|
"_USER_GUIDE_SEE_SAMPLE_ITEM": "このコレクションのアイテムのサンプルを見る",
|
|
1405
1405
|
"_USER_GUIDE_SEE_SAMPLE_USER": "この対象ユーザーのサンプルを見る",
|
|
1406
1406
|
"_USER_GUIDE_SEGMENT_CREATE_CRITERIA": "ファイルの情報を使用して、このセグメントに適した視聴者を見つけるための基準を作成します",
|
|
1407
|
-
"_USER_GUIDE_SEGMENT_CREATE_CRITERIA_INTRO": "
|
|
1407
|
+
"_USER_GUIDE_SEGMENT_CREATE_CRITERIA_INTRO": "システムは基準を満たす視聴者を探し、このセグメントに追加します。",
|
|
1408
1408
|
"_USER_GUIDE_SEGMENT_CREATE_CRITERIA_NOTE": "<b>注:</b> アップロードされたファイルからは、このシステムに存在する ID を持つ視聴者のみを作成するセグメントに追加できます。アップロードされたファイルは最後に使用されてから 6 か月間保存され、その後は使用できなくなります。",
|
|
1409
1409
|
"_USER_GUIDE_SELECT_A_ATTRIBUTE": "属性を選択してください",
|
|
1410
1410
|
"_USER_GUIDE_SELECT_A_CATALOG": "カタログを選択してください",
|
|
@@ -1424,7 +1424,7 @@
|
|
|
1424
1424
|
"_USER_GUIDE_TOTAL_ATTR_MEASURE": "合計 {{num_attr}} 個の属性と {{num_measure}} 個のメジャーが選択されました",
|
|
1425
1425
|
"_USER_GUIDE_TOTAL_BRANCH": "注: 合計 100%",
|
|
1426
1426
|
"_USER_GUIDE_TOTAL_FIELD": "{{x}} 個の選択されたフィールド",
|
|
1427
|
-
"_USER_GUIDE_UPLOAD_FILE": "- サポートされているファイル形式は次のとおりです: .csv、.xls、.xlsx <br />\n- .xlsx ファイルの最初の行はヘッダー行とみなされます<br />\n- デフォルトのデータエンコーディングはUTF-8
|
|
1427
|
+
"_USER_GUIDE_UPLOAD_FILE": "- サポートされているファイル形式は次のとおりです: .csv、.xls、.xlsx <br />\n- .xlsx ファイルの最初の行はヘッダー行とみなされます<br />\n- デフォルトのデータエンコーディングはUTF-8です。",
|
|
1428
1428
|
"_USER_GUIDE_UPLOAD_FILE_BEFORE_MAPPING": "属性をマッピングする前にファイルをアップロードする必要があります",
|
|
1429
1429
|
"_USER_GUIDE_UPLOAD_WAITING": "システムの処理が完了するまで 10 分間お待ちください。<br />\nページを更新してデータを確認します",
|
|
1430
1430
|
"_USER_GUIDE_USER_NOT_FOUND": "ユーザーが見つかりません",
|
|
@@ -1511,7 +1511,7 @@
|
|
|
1511
1511
|
"_OPTION_REMAINING_CODE_EXPIRATION": "残りのコードはすべて有効期限が切れます",
|
|
1512
1512
|
"_TITL_EXPIRATION_DATE": "有効期限",
|
|
1513
1513
|
"_TITL_EXPIRATION_TIME": "有効期限",
|
|
1514
|
-
"_USER_GUIDE_UPLOAD_PROMOTION_CODE": "<b>注:</b>\n </br> - CDP 365
|
|
1514
|
+
"_USER_GUIDE_UPLOAD_PROMOTION_CODE": "<b>注:</b>\n </br> - CDP 365 に存在しない新しいコードのみをインポートできます\n </br> - アップロードされたファイルは最後に使用されてから 6 か月間保存され、その後は使用できなくなります。",
|
|
1515
1515
|
"_TAB_PROMOTION_CODE": "プロモーションコード",
|
|
1516
1516
|
"_TAB_POOL_SETTING": "プール設定",
|
|
1517
1517
|
"_TITL_PROMOTION_CODE_INFO": "プロモーションコード情報",
|
|
@@ -1580,7 +1580,7 @@
|
|
|
1580
1580
|
"_ITEM_NAME_LINE_ITEM_ATTRIBUTE": "ラインアイテム属性",
|
|
1581
1581
|
"_CHK_IGNORE_DUPLICATE": "予定された旅行の重複メッセージを無視する",
|
|
1582
1582
|
"_CHK_LIMITED_FREQ_JOURNEY": "旅行の頻度を制限します(期間は 3 か月)",
|
|
1583
|
-
"_CHK_LIMITED_FREQ_DESTINATION": "
|
|
1583
|
+
"_CHK_LIMITED_FREQ_DESTINATION": "宛先の頻度を制限する",
|
|
1584
1584
|
"_TITL_TIME_PER_PERSON": "1人あたりの時間",
|
|
1585
1585
|
"_TITL_MEMBER_INPUT_METHOD": "メンバー入力方法",
|
|
1586
1586
|
"_TITL_SET_UP_ALERT": "アラートを設定する",
|
|
@@ -1627,7 +1627,7 @@
|
|
|
1627
1627
|
"_TITL_PREPARE_REPORT": "レポートを準備する",
|
|
1628
1628
|
"_TITL_ENABLE_PARAMETER_FILTER": "パラメータフィルターを有効にする",
|
|
1629
1629
|
"_TITL_ENABLE_MASTER_FILTER": "マスターフィルターを有効にする",
|
|
1630
|
-
"_TITL_PPL_W_ACCESS": "
|
|
1630
|
+
"_TITL_PPL_W_ACCESS": "アクセスできる人",
|
|
1631
1631
|
"_TITL_PUBLIC_REPORT": "ポータルで公開",
|
|
1632
1632
|
"_TITL_FILTER_TYPE": "フィルターの種類",
|
|
1633
1633
|
"_TITL_DATA_SOURCE": "データソース",
|
|
@@ -1717,7 +1717,7 @@
|
|
|
1717
1717
|
"_TITL_VERSION": "バージョン",
|
|
1718
1718
|
"_TAB_DELIVERY_LOG": "配信ログ",
|
|
1719
1719
|
"_TAB_DETAIL": "詳細",
|
|
1720
|
-
"_TAB_DIAGRAM": "
|
|
1720
|
+
"_TAB_DIAGRAM": "ダイアグラム",
|
|
1721
1721
|
"_CODE_BUILD_CONTENT_ERROR": "ビルドコンテンツエラー",
|
|
1722
1722
|
"_CODE_MISSING_RECEIVER": "受信機がありません",
|
|
1723
1723
|
"_CODE_DESTINATION_FREQUENCY_CAPPING": "宛先フリークエンシー キャップに違反する",
|
|
@@ -1749,7 +1749,7 @@
|
|
|
1749
1749
|
"_USER_GUIDE_SEG_STATUS_ARCHIVE": "セグメントは間隔の構築を停止したため、他のオブジェクトでは使用できません",
|
|
1750
1750
|
"_USER_GUIDE_COL_STATUS_ENABLE": "コレクションはインターバルビルド可能で、他のオブジェクトでも使用可能",
|
|
1751
1751
|
"_USER_GUIDE_COL_STATUS_DISABLE": "コレクションは間隔の構築を停止しました。 コレクションは他のオブジェクトで使用できますが、新しいデータは使用できません",
|
|
1752
|
-
"_USER_GUIDE_COL_STATUS_ARCHIVE": "
|
|
1752
|
+
"_USER_GUIDE_COL_STATUS_ARCHIVE": "コレクションは間隔構築を停止したため、他のオブジェクトでは使用できません",
|
|
1753
1753
|
"_USER_GUIDE_COMPUTE_STATUS_WAITING_INITIAL": "オブジェクトは計算スケジュールを待っています",
|
|
1754
1754
|
"_USER_GUIDE_COMPUTE_STATUS_WAITING": "オブジェクトは計算を待っています",
|
|
1755
1755
|
"_USER_GUIDE_COMPUTE_STATUS_COMPUTING": "オブジェクトは計算中です",
|
|
@@ -1762,7 +1762,7 @@
|
|
|
1762
1762
|
"_USER_GUIDE_JOURNEY_STATUS_ACTIVE": "旅は進行中です",
|
|
1763
1763
|
"_USER_GUIDE_JOURNEY_STATUS_CLOSED": "ジャーニーの処理時間が近づいています",
|
|
1764
1764
|
"_USER_GUIDE_JOURNEY_STATUS_PAUSED": "キャンペーンは一時的に停止されていますが、新規視聴者の参加は引き続き許可されています",
|
|
1765
|
-
"_USER_GUIDE_JOURNEY_STATUS_FROZEN": "
|
|
1765
|
+
"_USER_GUIDE_JOURNEY_STATUS_FROZEN": "キャンペーンは保留されており、新しい視聴者の参加は許可されていません",
|
|
1766
1766
|
"_USER_GUIDE_JOURNEY_STATUS_ERROR": "旅行処理中にエラーが発生しました",
|
|
1767
1767
|
"_USER_GUIDE_JOURNEY_STATUS_ABORTED": "旅は完全停止を余儀なくされる",
|
|
1768
1768
|
"_USER_GUIDE_JOURNEY_STATUS_REMOVED": "旅が削除されました",
|
|
@@ -1774,7 +1774,7 @@
|
|
|
1774
1774
|
"_PORTAL_LIMITATION_DES_COL_ARCHIVED": "コレクションは、使用されない場合はアーカイブされます。",
|
|
1775
1775
|
"_PORTAL_LIMITATION_DES_COL_DELETE": "までに回復しない場合、コレクションは完全に削除されます",
|
|
1776
1776
|
"_PORTAL_LIMITATION_DES_BO_DISABLED": "データ オブジェクトは、次の場所で使用されない場合は無効になります。",
|
|
1777
|
-
"_PORTAL_LIMITATION_DES_BO_ARCHIVED": "
|
|
1777
|
+
"_PORTAL_LIMITATION_DES_BO_ARCHIVED": "データ オブジェクトは、使用されない場合はアーカイブされます。",
|
|
1778
1778
|
"_PORTAL_LIMITATION_DES_BO_DELETE": "データオブジェクトは、次の期間に回復しない場合は完全に削除されます。",
|
|
1779
1779
|
"_PORTAL_LIMITATION_DES_ATTR_DISABLED": "で使用されない場合、属性は無効になります。 ",
|
|
1780
1780
|
"_PORTAL_LIMITATION_DES_ATTR_ARCHIVED": "属性が使用されない場合はアーカイブされます。",
|
|
@@ -1786,7 +1786,7 @@
|
|
|
1786
1786
|
"_COMPUTATION_SEGMENT_PROPERTY_DELETED": "セグメントのプロパティで使用されているオブジェクトが存在しません",
|
|
1787
1787
|
"_COMPUTATION_ATTRIBUTE_PROPERTY_ARCHIVED": "属性のプロパティで使用されるオブジェクトはアーカイブされています",
|
|
1788
1788
|
"_COMPUTATION_ATTRIBUTE_PROPERTY_DELETED": "属性のプロパティで使用されているオブジェクトが存在しません",
|
|
1789
|
-
"_MEASURE_TYPE_UC_APPROXIMATE_DATASKETCHES": "
|
|
1789
|
+
"_MEASURE_TYPE_UC_APPROXIMATE_DATASKETCHES": "一意のおおよその数 (データスケッチ)",
|
|
1790
1790
|
"_TITL_ASSOCIATE_UTM": "UTMと連携する",
|
|
1791
1791
|
"_TITL_PLANNING": "企画",
|
|
1792
1792
|
"_TITLE_PLAN_ALL_PLANS": "すべてのプラン",
|
|
@@ -1805,7 +1805,7 @@
|
|
|
1805
1805
|
"_USER_GUIDE_PLAN_REMOVE_GROUP_CONTENT": "このグループを削除してもよろしいですか?",
|
|
1806
1806
|
"_ACT_PLAN_SAVE_AS_NEW_SEG": "新しいセグメントとして保存",
|
|
1807
1807
|
"_ACT_PLAN_SAVE_AS_EXIST_SEG": "または、既存のセグメントにロードします",
|
|
1808
|
-
"_TITLE_SELECT_SEGMENT": "
|
|
1808
|
+
"_TITLE_SELECT_SEGMENT": "セグメントを選択",
|
|
1809
1809
|
"_DES_LAST_BUILD_TIME": "前回のビルド時間",
|
|
1810
1810
|
"_ACT_PLAN_SAVE_AS": "名前を付けて保存",
|
|
1811
1811
|
"_ACT_PLAN_PRIVATE_TEMPLATE": "プライベートテンプレート",
|
|
@@ -1816,7 +1816,7 @@
|
|
|
1816
1816
|
"_USER_GUIDE_PLAN_PROCESSING": "処理...",
|
|
1817
1817
|
"_USER_GUIDE_MOVE_GROUP_INCLUDE": "人を含めるためにグループをここに移動します",
|
|
1818
1818
|
"_USER_GUIDE_MOVE_GROUP_EXCLUDE": "ユーザーを除外するにはグループをここに移動します",
|
|
1819
|
-
"_USER_GUIDE_NOTIFY_PROCESSING_SUCCESS": "{{セグメント名}}セグメントのデータ処理が完了しました",
|
|
1819
|
+
"_USER_GUIDE_NOTIFY_PROCESSING_SUCCESS": "{{セグメント名}} セグメントのデータ処理が完了しました",
|
|
1820
1820
|
"_USER_GUIDE_NOTIFY_PROCESSING_FAILT": "{{セグメント名}} セグメントのデータ処理に失敗しました",
|
|
1821
1821
|
"_TITLE_NOTIFY_HIDE": "隠れる",
|
|
1822
1822
|
"_TITLE_BTN_RECOMPUTED": "再計算された",
|
|
@@ -1874,7 +1874,7 @@
|
|
|
1874
1874
|
"_EVENT_SETTING_RECORD_IN_PROFILE": "訪問者/顧客プロファイルにイベント データを記録する",
|
|
1875
1875
|
"_WARN_SMS_DYNAMIC_CONTENT": "(文字数は、コンテンツに動的コンテンツまたはショートリンクが含まれる場合のみ参考用です)",
|
|
1876
1876
|
"_TITLE_CATALOG_DESTINATION_CHANNEL": "宛先チャンネル",
|
|
1877
|
-
"_TITLE_CATALOG_DESTINATION_CATALOGS": "
|
|
1877
|
+
"_TITLE_CATALOG_DESTINATION_CATALOGS": "目的地カタログ",
|
|
1878
1878
|
"_TITLE_CATALOG_ALL_CATALOGS": "すべてのカタログ",
|
|
1879
1879
|
"_TITLE_CATALOG_CATALOG_NAME": "カタログ名",
|
|
1880
1880
|
"_TITLE_CATALOG_DEFAULT_CATALOG": "デフォルトのカタログ",
|
|
@@ -1941,14 +1941,14 @@
|
|
|
1941
1941
|
"_WARN_ATTR_COMPUTATIONAL_LIMIT": "現在、計算制限に達しているため、システムは次の有効な時間にこの属性を計算します。",
|
|
1942
1942
|
"_WARN_TITLE_AM_WARN_TOTAL": "警告 分析モデルの合計制限数",
|
|
1943
1943
|
"_WARN_AM_WARN_TOTAL_CONTENT_CREATE": "分析モデルの数が制限に達しました。\n新しい分析モデルを作成する場合は、使用されていない分析モデルを削除してください。",
|
|
1944
|
-
"_ACT_WARN_AM_GO_TO_LIST": "
|
|
1944
|
+
"_ACT_WARN_AM_GO_TO_LIST": "解析モデルリストに移動",
|
|
1945
1945
|
"_TITLE_SELECTED_AM": "選択した分析モデル",
|
|
1946
1946
|
"_WARN_TITLE_AM_NAME": "解析モデル名",
|
|
1947
1947
|
"_WARN_TITLE_AM_STATUS": "状態",
|
|
1948
1948
|
"_WARN_TITLE_AM_CREATED_BY": "作成者",
|
|
1949
1949
|
"_ERROR_MESS_AM_COMPUTED_LIMIT": "この時間内に構築される分析モデルの数の制限に達しました。",
|
|
1950
1950
|
"_WARN_TITLE_AM_COMPUTATIONAL_LIMIT": "警告 分析モデルの計算制限",
|
|
1951
|
-
"_WARN_AM_COMPUTATIONAL_LIMIT": "
|
|
1951
|
+
"_WARN_AM_COMPUTATIONAL_LIMIT": "現在、計算制限に達しているため、システムは次の有効な時間内にこの分析モデルを計算します。",
|
|
1952
1952
|
"_WARN_TITLE_BO_WARN_TOTAL": "警告 ビジネス オブジェクトの合計制限",
|
|
1953
1953
|
"_WARN_BO_WARN_TOTAL_CONTENT_CREATE": "ビジネス オブジェクトの数が制限に達しました。\n新しいビジネス オブジェクトを作成する場合は、未使用のビジネス オブジェクトをアーカイブしてください。",
|
|
1954
1954
|
"_ACT_WARN_BO_GO_TO_LIST": "ビジネスオブジェクトリストに移動",
|
|
@@ -1983,7 +1983,7 @@
|
|
|
1983
1983
|
"_WARN_COLL_WARN_TOTAL_CONTENT_RECOVER": "{{dynamic_collections}} {{static_collections}} の数が制限に達しました。\nコレクションを回復したい場合は、未使用のコレクションをアーカイブしてください。",
|
|
1984
1984
|
"_ERROR_MESS_COLL_COMPUTED_LIMIT": "この時間内に構築されるコレクションの数の制限に達しました。",
|
|
1985
1985
|
"_WARN_TITLE_COLL_COMPUTATIONAL_LIMIT": "警告収集の計算制限",
|
|
1986
|
-
"_WARN_COLL_COMPUTATIONAL_LIMIT": "
|
|
1986
|
+
"_WARN_COLL_COMPUTATIONAL_LIMIT": "現在、計算制限に達しているため、システムは次の有効な時間内にこのコレクションを計算します。",
|
|
1987
1987
|
"_OPTION_SEGMENT_SCHEDULE_DETAILS_HOUR_AM": "{{x}} 時間ごとに {{HH:MM}} 時",
|
|
1988
1988
|
"_OPTION_SEGMENT_SCHEDULE_DETAILS_HOUR_PM": "{{x}} 時間ごとに 午後{{HH:MM}} 時",
|
|
1989
1989
|
"_OPTION_SEGMENT_SCHEDULE_DETAILS_DAY_AM": "{{x}}日ごとの {{HH:MM}} 時",
|
|
@@ -2101,7 +2101,7 @@
|
|
|
2101
2101
|
"_PREDICT_MODEL_UPDATE_INTO_EXISTING_SEGMENT": "既存のセグメントへの更新",
|
|
2102
2102
|
"_PREDICT_MODEL_CREATE_NEW_ATTRIBUTE": "新しい属性を作成する",
|
|
2103
2103
|
"_PREDICT_MODEL_UPDATE_INTO_EXISTING_ATTRIBUTE": "既存の属性に更新する",
|
|
2104
|
-
"_PREDICT_MODEL_SELECT_SEGMENT": "
|
|
2104
|
+
"_PREDICT_MODEL_SELECT_SEGMENT": "セグメントを選択",
|
|
2105
2105
|
"_PREDICT_MODEL_SELECT_ATTRIBUTE": "属性の選択",
|
|
2106
2106
|
"_PREDICT_MODEL_CANNOT_LOSE_THEM": "それらを失うことはできません",
|
|
2107
2107
|
"_PREDICT_MODEL_AT_RISK": "危険にさらされています",
|
|
@@ -2114,7 +2114,7 @@
|
|
|
2114
2114
|
"_PREDICT_MODEL_NEW_CUSTOMERS": "新規のお客様",
|
|
2115
2115
|
"_PREDICT_MODEL_POTENTIAL_LOYALISTS": "潜在的なロイヤリスト",
|
|
2116
2116
|
"_PREDICT_MODEL_NEED_ATTENTION": "注意が必要です ",
|
|
2117
|
-
"_PREDICT_MODEL_VISUALIZATION_ERROR": "
|
|
2117
|
+
"_PREDICT_MODEL_VISUALIZATION_ERROR": "データを視覚化できない",
|
|
2118
2118
|
"_PREDICT_MODEL_VISUALIZATION_TIP": "購入金額の価値 ",
|
|
2119
2119
|
"_PREDICT_MODEL_LIMIT_EQUAL_TO": "に等しい",
|
|
2120
2120
|
"_PREDICT_MODEL_LIMIT_GREATER_THAN_OR_EQUAL_TO": "以上 ",
|
|
@@ -2492,9 +2492,9 @@
|
|
|
2492
2492
|
"_OBJ_DES_FILE_TRANSFER_1": "さまざまなシステム間での大規模なデータセットの共有を自動化し、より迅速かつ正確なデータ処理を実現します。",
|
|
2493
2493
|
"_OBJ_DES_FILE_TRANSFER_2": "マーケティング資料やキャンペーン資産をチームメンバーや外部関係者に簡単に配布し、より良いコラボレーションとコミュニケーションを促進します。",
|
|
2494
2494
|
"_OBJ_DES_FILE_TRANSFER_3": "ファイル転送をマーケティングオートメーションに統合して時間と人的リソースを節約する",
|
|
2495
|
-
"_OBJ_DES_ORCHES_1": "
|
|
2495
|
+
"_OBJ_DES_ORCHES_1": "さまざまなチャネルを通じて顧客にリーチし、ブランドの認知度を高め、市場への浸透を高めることで、ブランドの認知度を高めます。",
|
|
2496
2496
|
"_OBJ_DES_ORCHES_2": "好みのプラットフォームで顧客を引き込み、ロイヤルティと支持を促進するシームレスで記憶に残るインタラクションを生み出します。",
|
|
2497
|
-
"_OBJ_DES_ORCHES_3": "
|
|
2497
|
+
"_OBJ_DES_ORCHES_3": "チャネル全体でターゲットを絞ったメッセージを送信することで、購入者のジャーニーを見込み顧客に導き、コンバージョンを促進し、販売機会を最大化します。",
|
|
2498
2498
|
"_OBJ_DES_ORCHES_4": "チャネルの好みや行動に基づいて特定の視聴者セグメントに合わせてキャンペーンを調整し、共感を呼び、コンバージョンにつながるパーソナライズされたエクスペリエンスを提供します。",
|
|
2499
2499
|
"_OBJ_DES_ORCHES_5": "すべてのチャネルにわたって包括的な分析を取得し、データ主導の意思決定と継続的なキャンペーンの改善を強化して、最適な結果と ROI を実現します。",
|
|
2500
2500
|
"_WEBPER_TEMP_OBJ_DES_POP_1": "潜在的な顧客からの情報、または既存の顧客からのレビューやフィードバックを収集してデータを充実させます",
|
|
@@ -2580,9 +2580,9 @@
|
|
|
2580
2580
|
"_EVENT_TEMPLATE_ECOMMERCE_DES_5": "チェックアウトプロセスを追跡してドロップオフポイントを特定し、ファネルを最適化してコンバージョン率を高めます。",
|
|
2581
2581
|
"_EVENT_TEMPLATE_ECOMMERCE_OBJ_6": "顧客サポートの向上",
|
|
2582
2582
|
"_EVENT_TEMPLATE_ECOMMERCE_DES_6": "ユーザー インタラクションに関するデータを使用して、より優れた顧客サポートを提供し、一般的な問題に効果的に対処します。",
|
|
2583
|
-
"_REALTIME_FACEBOOK_LEAD": "「Facebook Lead」テンプレートを使用すると、Facebook
|
|
2583
|
+
"_REALTIME_FACEBOOK_LEAD": "「Facebook Lead」テンプレートを使用すると、Facebook 広告キャンペーンを通じて配布されたフォームに記入したユーザーからリアルタイムで簡単に情報を収集し、この情報を CDP 365 で管理できます。この機能により、顧客データを迅速に一元化し、マーケティングを最適化できます。戦略を立て、コンバージョン率を向上させます。",
|
|
2584
2584
|
"_REALTIME_FACEBOOK_LEAD_OBJ_1": "リードを顧客に変える",
|
|
2585
|
-
"_REALTIME_FACEBOOK_LEAD_DES_1": "
|
|
2585
|
+
"_REALTIME_FACEBOOK_LEAD_DES_1": "収集した情報を使用して潜在的な見込み客と直接連絡を取り、相談し、彼らを実際の顧客に変えます。",
|
|
2586
2586
|
"_REALTIME_FACEBOOK_LEAD_OBJ_2": "マーケティング戦略の強化",
|
|
2587
2587
|
"_REALTIME_FACEBOOK_LEAD_DES_2": "フォームからのデータを分析して顧客のニーズと好みをより深く理解し、マーケティング戦略を調整して最適化できるようにします。",
|
|
2588
2588
|
"_REALTIME_FACEBOOK_LEAD_OBJ_3": "マーケティングプロセスを自動化する",
|
|
@@ -2668,7 +2668,7 @@
|
|
|
2668
2668
|
"_COOKIE_DM_INSTRUCTION_1_DES_2": "これは、追跡するすべてのサブドメインのベース ドメインです。例: {{x}}",
|
|
2669
2669
|
"_COOKIE_DM_INSTRUCTION_2_SUM": "Cookie ドメインを構成します。",
|
|
2670
2670
|
"_COOKIE_DM_INSTRUCTION_2_DES_1": "すべてのサブドメインにわたってデータを追跡するには、「{{x}}」と入力します (例: {{y}} または {{z}})",
|
|
2671
|
-
"_ZALO_TEMP_SELECT_1": "Zalo
|
|
2671
|
+
"_ZALO_TEMP_SELECT_1": "Zalo公式アカウントによる様々なスタイル",
|
|
2672
2672
|
"_ZALO_TEMP_SELECT_2": "これらのテンプレートは、Zalo 公式アカウント専用です。クリック ",
|
|
2673
2673
|
"_ZALO_TEMP_SELECT_3": "ここ",
|
|
2674
2674
|
"_ZALO_TEMP_SELECT_4": "目的地を作成します。"
|
|
@@ -2055,7 +2055,7 @@
|
|
|
2055
2055
|
"_PREDICT_MODEL_ALL_PREDICTIVE_MODELS": "Tất cả các mô hình dự đoán",
|
|
2056
2056
|
"_PREDICT_MODEL_CREATE_NEW_MODEL": "Tạo mới",
|
|
2057
2057
|
"_PREDICT_MODEL_RFM_MODEL": "Mô hình RFM",
|
|
2058
|
-
"_PREDICT_MODEL_RFM_DESCRIPTION": "Xếp hạng và nhóm khách hàng một cách định lượng dựa trên mức độ gần đây, tần suất và tổng số tiền trong hành vi chi tiêu của họ",
|
|
2058
|
+
"_PREDICT_MODEL_RFM_DESCRIPTION": "Xếp hạng và phân nhóm khách hàng một cách định lượng dựa trên mức độ gần đây, tần suất và tổng số tiền trong hành vi chi tiêu của họ",
|
|
2059
2059
|
"_PREDICT_MODEL_ERFM_MODEL": "Mô hình eRFM",
|
|
2060
2060
|
"_PREDICT_MODEL_ERFM_DESCRIPTION": "Mô hình eRFM là mô hình RFM rộng hơn, phân tích khách hàng dựa trên hành vi chi tiêu và mức độ tương tác qua email của họ",
|
|
2061
2061
|
"_PREDICT_MODEL_PROPENSITY_TO_BUY_MODEL": "Xu hướng mua mô hình",
|
|
@@ -2099,7 +2099,7 @@
|
|
|
2099
2099
|
"_PREDICT_MODEL_LABEL_MEDIUM": "Trung bình ",
|
|
2100
2100
|
"_PREDICT_MODEL_LABEL_LOW": "Thấp",
|
|
2101
2101
|
"_PREDICT_MODEL_LABEL_VERY_LOW": "Rất thấp",
|
|
2102
|
-
"_PREDICT_MODEL_DATA_UPDATE_TO_SEGMENTS": "Cập nhật dữ liệu
|
|
2102
|
+
"_PREDICT_MODEL_DATA_UPDATE_TO_SEGMENTS": "Cập nhật dữ liệu cho các phân đoạn",
|
|
2103
2103
|
"_PREDICT_MODEL_DATE_UPDATE_TO_ATTRIBUTES": "Cập nhật ngày cho thuộc tính",
|
|
2104
2104
|
"_PREDICT_MODEL_CREATE_NEW_SEGMENT": "Tạo phân đoạn mới",
|
|
2105
2105
|
"_PREDICT_MODEL_UPDATE_INTO_EXISTING_SEGMENT": "Cập nhật vào các phân khúc hiện có",
|
|
@@ -2107,7 +2107,7 @@
|
|
|
2107
2107
|
"_PREDICT_MODEL_UPDATE_INTO_EXISTING_ATTRIBUTE": "Cập nhật vào các thuộc tính hiện có",
|
|
2108
2108
|
"_PREDICT_MODEL_SELECT_SEGMENT": "Chọn đoạn",
|
|
2109
2109
|
"_PREDICT_MODEL_SELECT_ATTRIBUTE": "Chọn thuộc tính",
|
|
2110
|
-
"_PREDICT_MODEL_CANNOT_LOSE_THEM": "Không thể
|
|
2110
|
+
"_PREDICT_MODEL_CANNOT_LOSE_THEM": "Không thể mất chúng",
|
|
2111
2111
|
"_PREDICT_MODEL_AT_RISK": "Có nguy cơ",
|
|
2112
2112
|
"_PREDICT_MODEL_LOST_CUSTOMER": "Khách hàng bị mất",
|
|
2113
2113
|
"_PREDICT_MODEL_LOYAL": "Trung thành",
|