@antscorp/antsomi-ui 1.3.5-beta.836 → 1.3.5-beta.838
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/organism/ActivityTimeline/ActivityTimeline.js +5 -4
- package/es/components/organism/ActivityTimeline/components/ItemGroupEvent/ItemGroupEvent.d.ts +1 -0
- package/es/components/organism/ActivityTimeline/components/ItemGroupEvent/ItemGroupEvent.js +3 -3
- package/es/components/organism/ActivityTimeline/styled.js +1 -0
- package/es/components/organism/ActivityTimeline/utils.d.ts +1 -1
- package/es/components/organism/ActivityTimeline/utils.js +15 -6
- package/es/locales/en/google-sheet.json +3 -0
- package/es/locales/i18n.d.ts +6 -0
- package/es/locales/ja/google-sheet.json +49 -49
- package/es/locales/vi/google-sheet.json +6 -3
- package/es/utils/date.d.ts +1 -0
- package/es/utils/date.js +11 -1
- package/es/utils/portal.d.ts +4 -4
- package/es/utils/portal.js +6 -3
- package/package.json +1 -1
|
@@ -7,10 +7,11 @@ import { ItemEvent, TimeLineTitle, ItemGroupEvent } from './components';
|
|
|
7
7
|
import { useInView } from 'react-intersection-observer';
|
|
8
8
|
import { translate, translations } from '@antscorp/antsomi-locales';
|
|
9
9
|
import { isEmpty } from 'lodash';
|
|
10
|
-
import { differenceInMonths,
|
|
10
|
+
import { differenceInMonths, formatUTCDateTZ, startOfMonth, subMonths, } from '@antscorp/antsomi-ui/es/utils/date';
|
|
11
|
+
import { getPortalTimeZone } from '@antscorp/antsomi-ui/es/utils/portal';
|
|
11
12
|
import { EmptyData } from '../../molecules';
|
|
12
13
|
export const ActivityTimeline = (props) => {
|
|
13
|
-
const { timelines = [], isLoading = false, title = translate(translations._BLOCK_TIMELINE_CUS), timezone =
|
|
14
|
+
const { timelines = [], isLoading = false, title = translate(translations._BLOCK_TIMELINE_CUS), timezone = getPortalTimeZone(), objectName = '_THIS_PERSON_UPPERCASE', onFetchMore, eventTracking: eventTrackingProp = [], header, className, } = props;
|
|
14
15
|
let { timelineAvailable } = props;
|
|
15
16
|
timelineAvailable = (timelines.length > 0 && !!timelineAvailable) || false;
|
|
16
17
|
const eventTracking = useMemo(() => {
|
|
@@ -35,7 +36,7 @@ export const ActivityTimeline = (props) => {
|
|
|
35
36
|
const result = [];
|
|
36
37
|
if (timelines.length > 0) {
|
|
37
38
|
const startDate = startOfMonth(new Date()).getTime();
|
|
38
|
-
let firstDateEvent = startOfMonth(new Date(
|
|
39
|
+
let firstDateEvent = startOfMonth(new Date(formatUTCDateTZ(timelines[0].trackedDateTimeUTC, 'MM/DD/YYYY', timezone))).getTime();
|
|
39
40
|
let diffTempt = differenceInMonths(new Date(startDate), new Date(firstDateEvent));
|
|
40
41
|
if (diffTempt === 0) {
|
|
41
42
|
result.push(_jsx(TimeLineTitle, { type: "label", data: { date: firstDateEvent } }, `time-heading--${startDate}`));
|
|
@@ -50,7 +51,7 @@ export const ActivityTimeline = (props) => {
|
|
|
50
51
|
result.push(_jsx(TimeLineTitle, { type: "label", data: { date: firstDateEvent } }, `time-heading--v2-${firstDateEvent}`));
|
|
51
52
|
}
|
|
52
53
|
timelines.forEach((item, index) => {
|
|
53
|
-
const firstDateEventTempt = startOfMonth(new Date(
|
|
54
|
+
const firstDateEventTempt = startOfMonth(new Date(formatUTCDateTZ(item.trackedDateTimeUTC, 'MM/DD/YYYY', timezone))).getTime();
|
|
54
55
|
if (firstDateEvent !== firstDateEventTempt) {
|
|
55
56
|
diffTempt = differenceInMonths(new Date(firstDateEvent), new Date(firstDateEventTempt));
|
|
56
57
|
if (diffTempt === 0) {
|
package/es/components/organism/ActivityTimeline/components/ItemGroupEvent/ItemGroupEvent.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ type ItemGroupEventProps = Partial<{
|
|
|
7
7
|
objectName: string;
|
|
8
8
|
currency: string;
|
|
9
9
|
eventTracking: EventTrackingWithMap;
|
|
10
|
+
timezone?: string;
|
|
10
11
|
}>;
|
|
11
12
|
export declare const renderProductCards: (dataItem: Record<string, any>, limitShow: number, inforEvent: Record<string, any>, infoCurrency: string, key: string) => React.ReactNode[];
|
|
12
13
|
export declare const ItemGroupEvent: (props: ItemGroupEventProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -13,7 +13,7 @@ import { ProductCard } from '../ProductCard';
|
|
|
13
13
|
import { isEmpty } from 'lodash';
|
|
14
14
|
import { ListItem, ListItemTime, ListItemTimeLine, ListItemTitle } from '../ListItem';
|
|
15
15
|
import { List } from '../List';
|
|
16
|
-
import { getPortalCurrency, safeParseDisplayFormatCurrency, } from '@antscorp/antsomi-ui/es/utils/portal';
|
|
16
|
+
import { getPortalCurrency, getPortalTimeZone, safeParseDisplayFormatCurrency, } from '@antscorp/antsomi-ui/es/utils/portal';
|
|
17
17
|
import { translate, translations } from '@antscorp/antsomi-ui/es/locales';
|
|
18
18
|
import { useAppConfigContext } from '@antscorp/antsomi-ui/es/providers';
|
|
19
19
|
import { numberWithCommas, safeParse, validateImageURL } from '@antscorp/antsomi-ui/es/utils';
|
|
@@ -41,7 +41,7 @@ export const renderProductCards = (dataItem, limitShow, inforEvent, infoCurrency
|
|
|
41
41
|
};
|
|
42
42
|
export const ItemGroupEvent = (props) => {
|
|
43
43
|
const { appConfig } = useAppConfigContext();
|
|
44
|
-
const { keyItem: key = '', item = {}, objectName = '', eventTracking = { map: {}, list: [] }, currency = getPortalCurrency(), } = props;
|
|
44
|
+
const { keyItem: key = '', item = {}, objectName = '', eventTracking = { map: {}, list: [] }, currency = getPortalCurrency(), timezone = getPortalTimeZone(), } = props;
|
|
45
45
|
const { etype: eType } = item;
|
|
46
46
|
const renderGroupEvent = (dataEvent) => {
|
|
47
47
|
const dataActivity = dataEvent.data.firstActivities;
|
|
@@ -51,7 +51,7 @@ export const ItemGroupEvent = (props) => {
|
|
|
51
51
|
return null;
|
|
52
52
|
return (_jsx(TimelineSection, { title: `${title}, ${rearTitle}`, bgIcon: infoEventLast.backgroundIcon, iconName: infoEventLast.iconName ? infoEventLast.iconName : 'cus web', children: _jsx(List, { type: "timeline", loadMore: true, limit: 5, noPaddingBottom: true, children: dataActivity.map((itemEvent, index) => {
|
|
53
53
|
const { titleEvent, fullContentEvent = '', infoEvent, validateExtra, perShow, limitShowSlide, } = getInfoEvent(eType, itemEvent, eventTracking, objectName, appConfig);
|
|
54
|
-
return (_jsxs(React.Fragment, { children: [_jsxs(ListItem, { children: [_jsx(ListItemTimeLine, { children: _jsx(ListItemTitle, { ellipsis: { tooltip: true }, children: htmlParse(fullContentEvent) }) }), _jsx(ListItemTime, { ellipsis: { tooltip: true }, children: formatDateHeader(itemEvent.trackedDateTimeUTC) })] }), infoEvent.showRedeem && validateExtra.loyalty_card ? (_jsxs(WrapperContainerRedeem, { children: [_jsx(CardMember, { info: validateExtra.loyalty_card }), checkShowRedeem(validateExtra) && (_jsx(Redeem, { point: safeParse(validateExtra.point, 'N/A'), redeemType: safeParse(validateExtra.point_type, 'N/A') }))] })) : (infoEvent.showRedeem &&
|
|
54
|
+
return (_jsxs(React.Fragment, { children: [_jsxs(ListItem, { children: [_jsx(ListItemTimeLine, { children: _jsx(ListItemTitle, { ellipsis: { tooltip: true }, children: htmlParse(fullContentEvent) }) }), _jsx(ListItemTime, { ellipsis: { tooltip: true }, children: formatDateHeader(itemEvent.trackedDateTimeUTC, timezone) })] }), infoEvent.showRedeem && validateExtra.loyalty_card ? (_jsxs(WrapperContainerRedeem, { children: [_jsx(CardMember, { info: validateExtra.loyalty_card }), checkShowRedeem(validateExtra) && (_jsx(Redeem, { point: safeParse(validateExtra.point, 'N/A'), redeemType: safeParse(validateExtra.point_type, 'N/A') }))] })) : (infoEvent.showRedeem &&
|
|
55
55
|
checkShowRedeem(validateExtra) && (_jsx(Redeem, { point: safeParse(validateExtra.point, 'N/A'), redeemType: safeParse(validateExtra.point_type, 'N/A') }))), itemEvent.items.length > 0 && itemEvent.items[0].item_type === 'product' && (_jsx(ListItemContent, { children: _jsx(ActionHistory, { revenue: infoEvent.showRevenue
|
|
56
56
|
? `${safeParse(validateExtra.revenue, '--') === '--'
|
|
57
57
|
? '--'
|
|
@@ -11,6 +11,6 @@ export declare const getInfoEvent: (eType: string, itemEvent: Record<string, any
|
|
|
11
11
|
perShow: number;
|
|
12
12
|
limitShowSlide: any;
|
|
13
13
|
};
|
|
14
|
-
export declare function formatDateHeader(timestamp: string | Date): string;
|
|
14
|
+
export declare function formatDateHeader(timestamp: string | Date, timezone?: string): string;
|
|
15
15
|
export declare const checkShowRedeem: (data: Record<string, any>) => boolean;
|
|
16
16
|
export declare function formatDateTitleHeading(timestamp: string | number): string;
|
|
@@ -4,8 +4,8 @@ import { get } from 'lodash';
|
|
|
4
4
|
import { ENV } from '../../..';
|
|
5
5
|
import { translate, translations } from '@antscorp/antsomi-ui/es/locales';
|
|
6
6
|
import { safeParse } from '@antscorp/antsomi-ui/es/utils';
|
|
7
|
-
import { formatDate,
|
|
8
|
-
import { getPortalFormatDateTimeLong } from '@antscorp/antsomi-ui/es/utils/portal';
|
|
7
|
+
import { formatDate, formatUTCDateTZ } from '@antscorp/antsomi-ui/es/utils/date';
|
|
8
|
+
import { getPortalFormatDateTimeLong, getPortalTimeZone, } from '@antscorp/antsomi-ui/es/utils/portal';
|
|
9
9
|
import { CDP_ROUTE } from '@antscorp/antsomi-ui/es/constants';
|
|
10
10
|
const translateAt = translate(translations._INFO_LOCATION, 'at');
|
|
11
11
|
const urlJourney = (data, config) => {
|
|
@@ -370,11 +370,20 @@ export const getInfoEvent = (eType, itemEvent, eventTracking, customerName, conf
|
|
|
370
370
|
limitShowSlide,
|
|
371
371
|
};
|
|
372
372
|
};
|
|
373
|
-
export function formatDateHeader(timestamp) {
|
|
374
|
-
|
|
375
|
-
|
|
373
|
+
export function formatDateHeader(timestamp, timezone = getPortalTimeZone()) {
|
|
374
|
+
let value = '';
|
|
375
|
+
try {
|
|
376
|
+
if (typeof timestamp === 'string') {
|
|
377
|
+
value = formatUTCDateTZ(timestamp, getPortalFormatDateTimeLong(), timezone);
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
value = formatUTCDateTZ(timestamp, getPortalFormatDateTimeLong(), timezone);
|
|
381
|
+
}
|
|
382
|
+
return value;
|
|
383
|
+
}
|
|
384
|
+
catch (error) {
|
|
385
|
+
return '';
|
|
376
386
|
}
|
|
377
|
-
return formatDateTZ(timestamp, getPortalFormatDateTimeLong());
|
|
378
387
|
}
|
|
379
388
|
export const checkShowRedeem = (data) => {
|
|
380
389
|
const validateData = safeParse(data, {});
|
|
@@ -2257,6 +2257,9 @@
|
|
|
2257
2257
|
"_ZALO_ACTION_SMS": "Open SMS",
|
|
2258
2258
|
"_ZALO_ACTION_PHONE": "Open Phone",
|
|
2259
2259
|
"_ZALO_RICH_TIME_LIMIT_DES": "This template could only be sent from 06:00 AM to 10:00 PM everyday. To prevent sending message unsuccessfully, make sure you choose the appropriate time range in Step 1 - Settings.",
|
|
2260
|
+
"_CONTENT_TABL": "Additional Content",
|
|
2261
|
+
"_CONTENT_TABL_KEY": "Label",
|
|
2262
|
+
"_CONTENT_TABL_VALUE": "Content",
|
|
2260
2263
|
"_CONTENT_TABL_ERR_MESS": "The label could not be duplicates",
|
|
2261
2264
|
"_CONTENT_TABL_HINT": "Label, Content must not exceed 25, 100 characters correspondingly",
|
|
2262
2265
|
"_ZNS_NO_TEMP": "No templates available for this destination",
|
package/es/locales/i18n.d.ts
CHANGED
|
@@ -2259,6 +2259,9 @@ export declare const translationsJson: {
|
|
|
2259
2259
|
_ZALO_ACTION_SMS: string;
|
|
2260
2260
|
_ZALO_ACTION_PHONE: string;
|
|
2261
2261
|
_ZALO_RICH_TIME_LIMIT_DES: string;
|
|
2262
|
+
_CONTENT_TABL: string;
|
|
2263
|
+
_CONTENT_TABL_KEY: string;
|
|
2264
|
+
_CONTENT_TABL_VALUE: string;
|
|
2262
2265
|
_CONTENT_TABL_ERR_MESS: string;
|
|
2263
2266
|
_CONTENT_TABL_HINT: string;
|
|
2264
2267
|
_ZNS_NO_TEMP: string;
|
|
@@ -5630,6 +5633,9 @@ export declare const translationsJson: {
|
|
|
5630
5633
|
_ZALO_ACTION_SMS: string;
|
|
5631
5634
|
_ZALO_ACTION_PHONE: string;
|
|
5632
5635
|
_ZALO_RICH_TIME_LIMIT_DES: string;
|
|
5636
|
+
_CONTENT_TABL: string;
|
|
5637
|
+
_CONTENT_TABL_KEY: string;
|
|
5638
|
+
_CONTENT_TABL_VALUE: string;
|
|
5633
5639
|
_CONTENT_TABL_ERR_MESS: string;
|
|
5634
5640
|
_CONTENT_TABL_HINT: string;
|
|
5635
5641
|
_ZNS_NO_TEMP: string;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"_ACT_ACTION": "アクション",
|
|
3
3
|
"_ACT_ADD_AN_OPTION": "オプションを追加する",
|
|
4
4
|
"_ACT_ADD_BRANCH": "ブランチを追加する",
|
|
5
|
-
"_ACT_ADD_CONDITION": "
|
|
5
|
+
"_ACT_ADD_CONDITION": "条件の追加",
|
|
6
6
|
"_ACT_ADD_CRITERIA": "基準を追加する",
|
|
7
7
|
"_ACT_ADD_DELAY_TIME": "その日の時刻まで遅延する",
|
|
8
8
|
"_ACT_ADD_EVENT": "イベント",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"_ACT_QUICK_TEST": "クイックテスト",
|
|
95
95
|
"_ACT_REFINE_ATTRIBUTE": "属性で絞り込む",
|
|
96
96
|
"_ACT_REMOVE": "取り除く",
|
|
97
|
-
"_ACT_REMOVE_ALL": "
|
|
97
|
+
"_ACT_REMOVE_ALL": "すべて削除",
|
|
98
98
|
"_ACT_REPLACE": "交換する",
|
|
99
99
|
"_ACT_REPORTS": "レポート",
|
|
100
100
|
"_ACT_RESET": "リセット",
|
|
@@ -415,12 +415,12 @@
|
|
|
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}} のメールをクリックしました",
|
|
@@ -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": "必須フィールドが欠落しています",
|
|
@@ -616,7 +616,7 @@
|
|
|
616
616
|
"_INFO_STORY_SELECT_END_DATE": "締め日を選択してください",
|
|
617
617
|
"_INFO_STORY_SELECT_WEEK_DAY": "曜日にトリガー",
|
|
618
618
|
"_INFO_STORY_SETTING": "一般設定",
|
|
619
|
-
"_INFO_STORY_SETTING_FREQ": "
|
|
619
|
+
"_INFO_STORY_SETTING_FREQ": "観客はこの旅に何回参加する必要があるでしょうか?",
|
|
620
620
|
"_INFO_STORY_START_DATE": "開始日",
|
|
621
621
|
"_INFO_STORY_START_TIME": "開始時間",
|
|
622
622
|
"_INFO_STORY_STATUS_ABORTED": "中止されました",
|
|
@@ -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": "この属性は計算中です。構築プロセスが完了するまで一部のフィールドは変更できません",
|
|
@@ -837,7 +837,7 @@
|
|
|
837
837
|
"_OPERATOR_LESS_OR_EQUAL": "以下",
|
|
838
838
|
"_OPERATOR_LESS_THAN": "未満",
|
|
839
839
|
"_OPERATOR_MATCH_ANY": "のいずれかに一致します",
|
|
840
|
-
"_OPERATOR_NOT_CONTAIN": "
|
|
840
|
+
"_OPERATOR_NOT_CONTAIN": "含まない",
|
|
841
841
|
"_OPERATOR_NOT_END_WITH": "で終わらない",
|
|
842
842
|
"_OPERATOR_NOT_EQUAL": "等しくない",
|
|
843
843
|
"_OPERATOR_NOT_EQUAL_TIME_AGO": "同じ時間前ではない",
|
|
@@ -868,7 +868,7 @@
|
|
|
868
868
|
"_RECOMD_FACTORIZATION_VIEW": "因数分解ビューイベント",
|
|
869
869
|
"_RECOMD_ITEM_SIMILARITY_PURCHASE": "アイテム類似購入イベント",
|
|
870
870
|
"_RECOMD_ITEM_SIMILARITY_VIEW": "アイテム類似性表示イベント",
|
|
871
|
-
"_RECOMD_NO_PRODUCT": "
|
|
871
|
+
"_RECOMD_NO_PRODUCT": "推奨される製品はありません。",
|
|
872
872
|
"_RECOMD_RANK_FACTORIZATION_PURCHASE": "ランク因数分解購入イベント",
|
|
873
873
|
"_RECOMD_RANK_FACTORIZATION_VIEW": "ランク因数分解ビューイベント",
|
|
874
874
|
"_RENDER_FORMAT": "表示形式",
|
|
@@ -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": "属性",
|
|
@@ -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": "イベントの内部名",
|
|
@@ -1119,7 +1119,7 @@
|
|
|
1119
1119
|
"_TITL_GENERAL_SETTING": "一般設定",
|
|
1120
1120
|
"_TITL_GET_ALL_VALUE": "全要素取得(最大100要素)",
|
|
1121
1121
|
"_TITL_GET_THE_TOP_VALUE": "トップを獲得する",
|
|
1122
|
-
"_TITL_GET_TRACKING_CODE": "{{zone_name}} の広告ゾーン
|
|
1122
|
+
"_TITL_GET_TRACKING_CODE": "{{zone_name}} の広告ゾーン スクリプトを取得する",
|
|
1123
1123
|
"_TITL_GROUP_ATTRIBUTE": "グループ属性",
|
|
1124
1124
|
"_TITL_GROUP_NAME": "グループ名",
|
|
1125
1125
|
"_TITL_HARD_BOUNCE": "ハードバウンス",
|
|
@@ -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": "ユーザーが見つかりません",
|
|
@@ -1444,7 +1444,7 @@
|
|
|
1444
1444
|
"_WARN_DELETE_ITEMS": "注意: {{all}} {{module}} の削除をリクエストしました。ただし、そのうちの {{number_not_delete}} 個は他の機能の入力として使用されているため削除できません。 <br />\n他の {{number_delete}} {{module}} を削除してもよろしいですか?",
|
|
1445
1445
|
"_WARN_DELETE_ITEMS_ALL": "{{number_delete}} {{module}} を削除してもよろしいですか?この操作は元に戻すことができません。",
|
|
1446
1446
|
"_WARN_DELETE_NODE": "確認すると、このノードとこのノードに関連するすべてのものが失われます。",
|
|
1447
|
-
"_WARN_DELETE_STORY": "注意: {{all}}
|
|
1447
|
+
"_WARN_DELETE_STORY": "注意: {{all}} 件の旅行を削除するようリクエストされました。ただし、削除できるのは、ステータスが「設計中」である {{x}} 件のジャーニーのみです。",
|
|
1448
1448
|
"_WARN_DELETE_TRIGGER_NODE": "トリガー ノードを削除すると、ジャーニー全体のデザインも削除されます。",
|
|
1449
1449
|
"_WARN_DESIGN_LOST": "現在のデザインは失われる可能性があります",
|
|
1450
1450
|
"_WARN_DISCARD_CHANGE_INTRO": "このサイトを離れると、作成した変更は保存されません",
|
|
@@ -1454,7 +1454,7 @@
|
|
|
1454
1454
|
"_WARN_NOT_DELETE_ITEMS": "これらの {{module}} は、他の機能の入力として使用されているため、削除できません。",
|
|
1455
1455
|
"_WARN_NOTE_APPLY_CHANGE_FIELD": "現在のフィールドに変更をまだ適用していません。これらの変更を保存しますか?",
|
|
1456
1456
|
"_WARN_ONLY_ACTION_STORY_PAUSED": "「{{list_paused_story_name}}」は正常に一時停止されました。<br /> 一時停止できるのはアクションベースのトリガー ジャーニーのみであり、スケジュール トリガー ジャーニーには適用されないことに注意してください。",
|
|
1457
|
-
"_WARN_ONLY_VALID_ALL_STORY_ACTIVATED": "「{{list_story_name}}
|
|
1457
|
+
"_WARN_ONLY_VALID_ALL_STORY_ACTIVATED": "「{{list_story_name}}」を有効化しました",
|
|
1458
1458
|
"_WARN_ONLY_VALID_STORY_ACTIVATED": "「{{list_story_name}}」を有効にしました<br />\n選択した他の旅程は有効化のための検証ステップを通過していません。各旅程のデザインで詳細を確認してください。",
|
|
1459
1459
|
"_WARN_REMOVE_ASSOCIATED_CONDITION": "ソース「{{source_name}}」を削除すると、このソースにのみ存在する関連する属性条件も削除されます。",
|
|
1460
1460
|
"_WARN_REMOVE_BRANCH": "既存の一連のアクションの途中にあるブランチを削除しています。続行するには、次のことができます",
|
|
@@ -1485,7 +1485,7 @@
|
|
|
1485
1485
|
"_WARN_REMOVE_VARIANT": "バリアント「{{x}}」を削除しますか?",
|
|
1486
1486
|
"_NODE_PARALLEL_FILTER": "並列フィルター",
|
|
1487
1487
|
"_INFO_STORY_PARALLEL_FILTER": "並列フィルター",
|
|
1488
|
-
"_USER_GUIDE_PARALLEL_FILTER": "<b>イントロに注意してください: </b>
|
|
1488
|
+
"_USER_GUIDE_PARALLEL_FILTER": "<b>イントロに注意してください: </b> 視聴者は、条件が満たされたいずれかの Yes 分岐を通過できます。それ以外の場合、観客はノーブランチを通過します。",
|
|
1489
1489
|
"_MENU_SUB_PROMOTION_CENTER": "プロモーションセンター",
|
|
1490
1490
|
"_TITL_ADD_PRODUCT_WIDGET": "製品ウィジェットを追加",
|
|
1491
1491
|
"_ACT_ADD_ATTRIBUTE_OBJECT": "属性オブジェクトの追加",
|
|
@@ -1513,7 +1513,7 @@
|
|
|
1513
1513
|
"_TITL_EXPIRATION_TIME": "有効期限",
|
|
1514
1514
|
"_USER_GUIDE_UPLOAD_PROMOTION_CODE": "<b>注:</b>\n </br> - CDP 365 に存在しない新しいコードのみをインポートできます\n </br> - アップロードされたファイルは最後に使用されてから 6 か月間保存され、その後は使用できなくなります。",
|
|
1515
1515
|
"_TAB_PROMOTION_CODE": "プロモーションコード",
|
|
1516
|
-
"_TAB_POOL_SETTING": "
|
|
1516
|
+
"_TAB_POOL_SETTING": "プール設定",
|
|
1517
1517
|
"_TITL_PROMOTION_CODE_INFO": "プロモーションコード情報",
|
|
1518
1518
|
"_TITL_CODE_GENERAL_INFO": "コードの一般情報",
|
|
1519
1519
|
"_TITL_CODE_DELIVERY_INFO": "コード配信情報",
|
|
@@ -1579,8 +1579,8 @@
|
|
|
1579
1579
|
"_TITL_ADD_FIELD": "フィールドの追加",
|
|
1580
1580
|
"_ITEM_NAME_LINE_ITEM_ATTRIBUTE": "ラインアイテム属性",
|
|
1581
1581
|
"_CHK_IGNORE_DUPLICATE": "予定された旅行の重複メッセージを無視する",
|
|
1582
|
-
"_CHK_LIMITED_FREQ_JOURNEY": "
|
|
1583
|
-
"_CHK_LIMITED_FREQ_DESTINATION": "
|
|
1582
|
+
"_CHK_LIMITED_FREQ_JOURNEY": "旅行の頻度を制限する(期間は 3 か月)",
|
|
1583
|
+
"_CHK_LIMITED_FREQ_DESTINATION": "宛先の頻度を制限する",
|
|
1584
1584
|
"_TITL_TIME_PER_PERSON": "1人あたりの時間",
|
|
1585
1585
|
"_TITL_MEMBER_INPUT_METHOD": "メンバー入力方法",
|
|
1586
1586
|
"_TITL_SET_UP_ALERT": "アラートを設定する",
|
|
@@ -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": "宛先フリークエンシー キャップに違反する",
|
|
@@ -1728,7 +1728,7 @@
|
|
|
1728
1728
|
"_TITL_TAG_ACTION_HISTORY_DETAIL": "行動履歴詳細",
|
|
1729
1729
|
"_TITL_TAG_SCHEDULE_HISTORY_DETAIL": "スケジュール履歴の詳細",
|
|
1730
1730
|
"_INFO_AD_ZONE_CODE": "ゾーンコード",
|
|
1731
|
-
"_STATE_COMPLETED": "
|
|
1731
|
+
"_STATE_COMPLETED": "完了",
|
|
1732
1732
|
"_STATE_END": "終わり",
|
|
1733
1733
|
"_STATE_EXIT_JOURNEY": "出口行程",
|
|
1734
1734
|
"_STATE_VIOLATE_TRIGGER_FC": "トリガーのフリークエンシー キャップに違反する",
|
|
@@ -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": "旅が削除されました",
|
|
@@ -1775,7 +1775,7 @@
|
|
|
1775
1775
|
"_PORTAL_LIMITATION_DES_COL_DELETE": "までに回復しない場合、コレクションは完全に削除されます",
|
|
1776
1776
|
"_PORTAL_LIMITATION_DES_BO_DISABLED": "データ オブジェクトは、次の場所で使用されない場合は無効になります。",
|
|
1777
1777
|
"_PORTAL_LIMITATION_DES_BO_ARCHIVED": "データオブジェクトは、使用されない場合はアーカイブされます。",
|
|
1778
|
-
"_PORTAL_LIMITATION_DES_BO_DELETE": "
|
|
1778
|
+
"_PORTAL_LIMITATION_DES_BO_DELETE": "次の期間に回復しない場合、データ オブジェクトは完全に削除されます",
|
|
1779
1779
|
"_PORTAL_LIMITATION_DES_ATTR_DISABLED": "で使用されない場合、属性は無効になります。 ",
|
|
1780
1780
|
"_PORTAL_LIMITATION_DES_ATTR_ARCHIVED": "属性が使用されない場合はアーカイブされます。",
|
|
1781
1781
|
"_PORTAL_LIMITATION_DES_ATTR_DELETE": "属性は、次の期間に回復しない場合は完全に削除されます。",
|
|
@@ -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": "デフォルトのカタログ",
|
|
@@ -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": "以上 ",
|
|
@@ -2171,7 +2171,7 @@
|
|
|
2171
2171
|
"_EVENT_CLICK_VIBER": "{{customer_name}} さんが Journey {{journey_name}} からの Viber メッセージをクリックしました",
|
|
2172
2172
|
"_EVENT_CLICK_SMS": "{{customer_name}} さんが Journey {{journey_name}} からの SMS メッセージをクリックしました",
|
|
2173
2173
|
"_EVENT_SENT_WEB_PERSONALIZA": "ジャーニー {{journey_name}} が {{customer_name}} に送信されました",
|
|
2174
|
-
"_EVENT_SENT_WEB_PUSH": "ジャーニー {{journey_name}}
|
|
2174
|
+
"_EVENT_SENT_WEB_PUSH": "ジャーニー {{journey_name}} がウェブプッシュ通知経由で {{customer_name}} に送信されました",
|
|
2175
2175
|
"_EVENT_SENT_APP PUSH": "ジャーニー {{journey_name}} がアプリのプッシュ通知経由で {{customer_name}} に送信されました",
|
|
2176
2176
|
"_EVENT_SENT_EMAIL": "Journey {{journey_name}} からのメールが {{customer_name}} に送信されました",
|
|
2177
2177
|
"_EVENT_SENT_FB": "Journey {{journey_name}} からの Facebook メッセージが {{customer_name}} に送信されました",
|
|
@@ -2284,7 +2284,7 @@
|
|
|
2284
2284
|
"_BLCK_OTP_EVENT": "イベント",
|
|
2285
2285
|
"_BLCK_OTP_EVENT_SOURCE": "イベントソース",
|
|
2286
2286
|
"_CHANNEL_CUSTOM_API": "カスタムチャンネル",
|
|
2287
|
-
"_CHANNEL_DES_WEB": "ユーザーの行動や好みに基づいて Web
|
|
2287
|
+
"_CHANNEL_DES_WEB": "ユーザーの行動や好みに基づいて Web サイトのコンテンツを動的に調整し、エンゲージメントとコンバージョン率を最適化します。",
|
|
2288
2288
|
"_CHANNEL_DES_WEB_NOTI": "リアルタイムのメッセージを送信して Web サイト訪問者を引きつけ、タイムリーなインタラクションとコンバージョンを促進します",
|
|
2289
2289
|
"_CHANNEL_DES_APP_NOTI": "即時通知をモバイル アプリのみに送信し、即時のエンゲージメントとインタラクションを促進します",
|
|
2290
2290
|
"_CHANNEL_DES_EMAIL": "パーソナライズされたメッセージをユーザーの受信箱に直接配信し、ターゲットを絞ったコンテンツでのエンゲージメントとコンバージョンを促進します。",
|
|
@@ -2435,7 +2435,7 @@
|
|
|
2435
2435
|
"_OBJ_DES_WEB_4": "それぞれの訪問者のインタラクションの価値を最大化するために、ユニークでパーソナライズされたオファーを提供します",
|
|
2436
2436
|
"_OBJ_DES_WEB_5": "ユーザーインタラクションを分析してコンテンツを洗練し、戦略をセグメント化し、Web サイトのレイアウトを最適化します。",
|
|
2437
2437
|
"_OBJ_DES_WEB_NOTI_1": "タイムリーな更新、プロモーション、アラートでユーザーに即座に連絡します",
|
|
2438
|
-
"_OBJ_DES_WEB_NOTI_2": "新しいコンテンツ、製品リリース、または期間限定オファーをユーザーに通知することで、Web
|
|
2438
|
+
"_OBJ_DES_WEB_NOTI_2": "新しいコンテンツ、製品リリース、または期間限定オファーをユーザーに通知することで、Web サイトへのトラフィックを促進します。",
|
|
2439
2439
|
"_OBJ_DES_WEB_NOTI_3": "パーソナライズされたオファーやリマインダーを配信してユーザーの行動を促す",
|
|
2440
2440
|
"_OBJ_DES_WEB_NOTI_4": "ユーザーの興味や好みに合わせた関連性の高い有益な通知を送信することで、ユーザーの関心とリピートを維持します。",
|
|
2441
2441
|
"_OBJ_DES_WEB_NOTI_5": "アカウント、トランザクション更新などの関連情報をユーザーのブラウザに直接配信します。",
|
|
@@ -2445,7 +2445,7 @@
|
|
|
2445
2445
|
"_OBJ_DES_APP_NOTI_4": "ユーザーの興味や好みに合わせた関連性の高い有益な通知を送信することで、ユーザーの関心を維持し、さらに戻ってくるようにします。",
|
|
2446
2446
|
"_OBJ_DES_APP_NOTI_5": "アカウント、トランザクション更新などの関連情報をユーザーのブラウザに直接配信します。",
|
|
2447
2447
|
"_OBJ_DES_EMAIL_1": "魅力的なコンテンツと電子メールの行動喚起 (CTA) でユーザーを Web サイトに誘導します",
|
|
2448
|
-
"_OBJ_DES_EMAIL_2": "
|
|
2448
|
+
"_OBJ_DES_EMAIL_2": "貴重なコンテンツとインセンティブを提供してサインアップや問い合わせを促進することで見込み顧客を獲得します。",
|
|
2449
2449
|
"_OBJ_DES_EMAIL_3": "ターゲットを絞ったコンテンツと自動化された電子メール シーケンスを使用して、セールス ファネルを通じてリードを誘導します。",
|
|
2450
2450
|
"_OBJ_DES_EMAIL_4": "関連するアップデート、オファー、限定コンテンツで顧客の関心とロイヤルティを維持します",
|
|
2451
2451
|
"_OBJ_DES_EMAIL_5": "製品やサービスを紹介して売上とコンバージョンを促進する",
|
|
@@ -2494,25 +2494,25 @@
|
|
|
2494
2494
|
"_OBJ_DES_FILE_TRANSFER_3": "ファイル転送をマーケティングオートメーションに統合して時間と人的リソースを節約する",
|
|
2495
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
|
-
"_WEBPER_TEMP_OBJ_DES_POP_1": "
|
|
2500
|
+
"_WEBPER_TEMP_OBJ_DES_POP_1": "潜在顧客からの情報、または既存顧客からのレビューやフィードバックを収集してデータを充実させます",
|
|
2501
2501
|
"_WEBPER_TEMP_OBJ_DES_POP_2": "限定セール、期間限定プロモーション、見逃せないおすすめ商品を紹介することで、収益を飛躍的に高めます。",
|
|
2502
2502
|
"_WEBPER_TEMP_OBJ_DES_POP_3": "追加購入を促すために補完的な製品やアップグレードを提案する",
|
|
2503
2503
|
"_WEBPER_TEMP_OBJ_DES_POP_4": "ためらう訪問者をさらに滞在させ、さらに探索したくなる魅力的なオファーで出口をチャンスに変えます。",
|
|
2504
2504
|
"_WEBPER_TEMP_OBJ_DES_POP_5": "重要なニュースやイベントを視聴者に直接ブロードキャストして最新情報を提供します",
|
|
2505
2505
|
"_WEBPER_TEMP_OBJ_DES_POP_6": "Cookie の使用についてユーザーの同意を得ることで、視聴者の安心とプライバシー規制の遵守を確保します。",
|
|
2506
|
-
"_WEBPER_TEMP_OBJ_DES_POP_7": "CDP 365
|
|
2507
|
-
"_WEBPER_TEMP_OBJ_DES_POP_8": "
|
|
2506
|
+
"_WEBPER_TEMP_OBJ_DES_POP_7": "CDP 365 のデータを利用して、パーソナライズされた製品の推奨事項を表示し、各訪問者の興味や過去のやり取りに合わせて調整できます。",
|
|
2507
|
+
"_WEBPER_TEMP_OBJ_DES_POP_8": "ターゲットを絞ったオファー、インセンティブ、またはリマインダーを使用して、躊躇する買い物客を購入を完了させるよう促します。",
|
|
2508
2508
|
"_WEBPER_TEMP_OBJ_DES_POP_9": "ソーシャル メディア プラットフォームでコミュニティを拡大し、ブランドの存在感を高めます",
|
|
2509
2509
|
"_WEBPER_TEMP_OBJ_DES_POP_10": "参加者と興奮を促進する注目を集めるイベント プロモーションで成功への舞台を整えます。",
|
|
2510
2510
|
"_WEBPER_TEMP_OBJ_DES_POP_11": "魅力的な運ゲーやインタラクティブなコンテンツで興奮を呼び起こし、エンゲージメントを高め、ユーザーを何度もリピートさせます。",
|
|
2511
|
-
"_WEBPER_TEMP_OBJ_DES_POP_12": "
|
|
2511
|
+
"_WEBPER_TEMP_OBJ_DES_POP_12": "新しいユーザーを支援し、提供された回答に基づいてパーソナライズされた推奨事項を提供します",
|
|
2512
2512
|
"_WEBPER_TEMP_OBJ_DES_POP_13": "直接リンクまたは QR コードを介してモバイル アプリをダウンロードしてスキャンするようユーザーに奨励します。",
|
|
2513
2513
|
"_WEBPER_TEMP_OBJ_DES_FLOAT_1": "リード獲得フォームを含めて、訪問者にニュースレター、プロモーション、その他のマーケティング資料への登録を促します。",
|
|
2514
2514
|
"_WEBPER_TEMP_OBJ_DES_FLOAT_2": "カウントダウンタイマー付きの特別セールや限定プロモーションで視聴者の目を引き、さらに探索するよう促します。",
|
|
2515
|
-
"_WEBPER_TEMP_OBJ_DES_FLOAT_3": "
|
|
2515
|
+
"_WEBPER_TEMP_OBJ_DES_FLOAT_3": "訪問者がスクロールしても表示され続けるバナーを使用して、重要なニュースが確実に注目されるようにし、最新情報を前面と中央に保ちます。",
|
|
2516
2516
|
"_WEBPER_TEMP_OBJ_DES_FLOAT_4": "あなたのブランドに対するフレンドリーな意見を確立するために、初めて Web サイトを閲覧する訪問者を歓迎します。",
|
|
2517
2517
|
"_WEBPER_TEMP_OBJ_DES_FLOAT_5": "ソーシャル メディア プラットフォームでコミュニティを拡大することで、ブランドの存在感を高めます。",
|
|
2518
2518
|
"_WEBPER_TEMP_OBJ_DES_FLOAT_6": "ブランドロゴを目立つように表示することでアイデンティティを強化し、ブランド認知度を向上させます",
|
|
@@ -2524,20 +2524,20 @@
|
|
|
2524
2524
|
"_WEBPER_TEMP_OBJ_DES_FULLSCR_6": "直接リンクまたは QR コードを介してモバイル アプリをダウンロードしてスキャンするようユーザーに奨励します。",
|
|
2525
2525
|
"_WEBPER_TEMP_OBJ_DES_FULLSCR_7": "顧客の生活に価値を付加し、単なる購入を超えてブランドと関わるよう促すために、詳細な情報と関連チュートリアルを提供します。",
|
|
2526
2526
|
"_WEBPER_TEMP_OBJ_DES_INLINE_1": "購読フォームや登録プロンプトを通じてユーザー情報を取得する",
|
|
2527
|
-
"_WEBPER_TEMP_OBJ_DES_INLINE_2": "CDP 365
|
|
2527
|
+
"_WEBPER_TEMP_OBJ_DES_INLINE_2": "CDP 365 のデータを利用して、パーソナライズされた製品の推奨事項を表示し、各訪問者の興味や過去のやり取りに合わせて調整できます。",
|
|
2528
2528
|
"_WEBPER_TEMP_OBJ_DES_INLINE_3": "魅力的な運ゲーやインタラクティブなコンテンツで興奮を呼び起こし、エンゲージメントを高め、ユーザーを何度もリピートさせます。",
|
|
2529
2529
|
"_WEBPER_TEMP_OBJ_DES_INLINE_4": "アンケート、投票、フィードバック フォームを組み込んで、貴重な洞察を収集し、交流を促進します。",
|
|
2530
2530
|
"_WEBPER_TEMP_OBJ_DES_INLINE_5": "顧客のレビュー、評価、お客様の声などの社会的証明要素を紹介して、購入の意思決定に影響を与える信頼と信用を構築します。",
|
|
2531
2531
|
"_WEBPER_TEMP_OBJ_DES_INLINE_6": "顧客の生活に価値を付加し、単なる購入を超えてブランドと関わるよう促すために、詳細な情報と関連チュートリアルを提供します。",
|
|
2532
2532
|
"_WEBPER_TEMP_OBJ_DES_SLIDEIN_1": "購読フォーム、登録プロンプト、またはゲート付きコンテンツのオファーを通じて、電子メール アドレスや連絡先の詳細などのユーザー情報を取得します。",
|
|
2533
2533
|
"_WEBPER_TEMP_OBJ_DES_SLIDEIN_2": "直前の取引やコンテンツの推奨事項を提供して、ユーザーに滞在してさらに探索するよう促します。",
|
|
2534
|
-
"_WEBPER_TEMP_OBJ_DES_SLIDEIN_3": "
|
|
2534
|
+
"_WEBPER_TEMP_OBJ_DES_SLIDEIN_3": "今後のコンテンツ、製品の発売、イベントを予告して、視聴者の期待と興奮を高め、Web サイトへのトラフィックを促進します。",
|
|
2535
2535
|
"_WEBPER_TEMP_OBJ_DES_SLIDEIN_4": "アンケート、投票、またはフィードバック フォームを組み込んで、貴重な洞察を収集し、交流を促進します。",
|
|
2536
2536
|
"_WEBPER_TEMP_OBJ_DES_SLIDEIN_5": "顧客のレビュー、評価、お客様の声などの社会的証明要素を紹介して、購入の意思決定に影響を与える信頼と信用を構築します。",
|
|
2537
|
-
"_WEBPER_TEMP_OBJ_DES_SLIDEIN_6": "
|
|
2538
|
-
"_WEBPER_TEMP_OBJ_DES_SLIDEIN_7": "
|
|
2537
|
+
"_WEBPER_TEMP_OBJ_DES_SLIDEIN_6": "期間限定のオファー、カウントダウンタイマー、フラッシュセール通知を提示することで、緊迫感を醸成し、即時行動を促します。",
|
|
2538
|
+
"_WEBPER_TEMP_OBJ_DES_SLIDEIN_7": "ターゲットを絞ったオファー、インセンティブ、またはリマインダーを使用して、躊躇する買い物客を購入を完了させるよう促します。",
|
|
2539
2539
|
"_WEBPER_TEMP_OBJ_DES_SLIDEIN_8": "顧客からの問い合わせの必要性を減らし、ショッピング体験の全体的な満足度を向上させるために、顧客が遭遇する可能性のある一般的な懸念事項や問題のトラブルシューティングに対処する",
|
|
2540
|
-
"_WEBPER_TEMP_OBJ_DES_SLIDEIN_9": "
|
|
2540
|
+
"_WEBPER_TEMP_OBJ_DES_SLIDEIN_9": "登録や出欠確認のオプションを提供して、ウェビナー、ワークショップ、イベントに参加するようユーザーを招待し、参加とエンゲージメントを促進します。",
|
|
2541
2541
|
"_LINE_MESS_OBJ_DES_1": "各ユーザーの好み、行動、過去のやり取りに基づいてメッセージをカスタマイズする",
|
|
2542
2542
|
"_LINE_MESS_OBJ_DES_2": "画像、ビデオ、ステッカーなどのマルチメディア コンテンツでメッセージを充実させます",
|
|
2543
2543
|
"_LINE_MESS_OBJ_DES_3": "ユーザーの参加を促すために、クリック可能なボタンなどのインタラクティブな要素を組み込む",
|
|
@@ -2545,12 +2545,12 @@
|
|
|
2545
2545
|
"_LINE_MESS_OBJ_DES_5": "プロモーション キャンペーンの開始、新製品の発表、限定割引の提供、売上の促進",
|
|
2546
2546
|
"_LINE_MESS_OBJ_DES_6": "メッセージ テンプレートのインタラクティブな要素を通じて、応答性の高いカスタマー サポートを提供します",
|
|
2547
2547
|
"_LINE_MESS_OBJ_DES_7": "組み込みのメッセージ テンプレートを使用して回答を求め、アンケートからユーザー情報を収集します",
|
|
2548
|
-
"_LINE_RM_DEFAULT_OBJ_DES_1": "よくある質問、連絡先情報、ライブ チャット サポートなどのカスタマー サポート
|
|
2548
|
+
"_LINE_RM_DEFAULT_OBJ_DES_1": "よくある質問、連絡先情報、ライブ チャット サポートなどのカスタマー サポート オプションへの素早いアクセスを提供することで、新規フォロワーをサポートします。",
|
|
2549
2549
|
"_LINE_RM_DEFAULT_OBJ_DES_2": "特別オファー、割引、プロモーションを強調表示する",
|
|
2550
2550
|
"_LINE_RM_DEFAULT_OBJ_DES_3": "今後のイベント、ウェビナー、またはワークショップを宣伝する",
|
|
2551
2551
|
"_LINE_RM_DEFAULT_OBJ_DES_4": "ユーザーを注目の記事、ビデオ、またはブログ投稿に誘導するオプションを提供します",
|
|
2552
2552
|
"_LINE_RM_DEFAULT_OBJ_DES_5": "他のソーシャル メディア プラットフォームでコミュニティを拡大することで、ブランドの存在感を高めます。",
|
|
2553
|
-
"_LINE_RM_DEFAULT_OBJ_DES_6": "
|
|
2553
|
+
"_LINE_RM_DEFAULT_OBJ_DES_6": "メニューの選択に基づいて、さまざまな操作を通じてユーザーをガイドします。\n\n たとえば、「カスタマー サポート」のメニュー項目を選択すると、「技術サポート」や「請求に関する問い合わせ」など、必要なサポートの種類を選択するオプションがユーザーに表示される場合があります。",
|
|
2554
2554
|
"_LINE_RM_DEFAULT_OBJ_DES_7": "購読フォームや登録プロンプトを備えたLDPにユーザーを誘導して、ユーザー情報を取得します。",
|
|
2555
2555
|
"_LINE_RM_SINGLE_OBJ_DES_1": "各ユーザーの好み、行動、Line チャネルとの過去のやり取りに基づいて、各ユーザーに表示されるメニュー オプションとコンテンツをカスタマイズします。",
|
|
2556
2556
|
"_LINE_RM_SINGLE_OBJ_DES_2": "各ユーザーの興味、閲覧履歴、人口統計に合わせたパーソナライズされた推奨事項や提案を提供し、関連性とエンゲージメントを強化します。",
|
|
@@ -2582,7 +2582,7 @@
|
|
|
2582
2582
|
"_EVENT_TEMPLATE_ECOMMERCE_DES_6": "ユーザー インタラクションに関するデータを使用して、より優れた顧客サポートを提供し、一般的な問題に効果的に対処します。",
|
|
2583
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": "マーケティングプロセスを自動化する",
|
|
@@ -2600,7 +2600,7 @@
|
|
|
2600
2600
|
"_REALTIME_FACEBOOK_MESSENGER_DES_4": "インタラクションから得た洞察を利用して、視聴者の共感を呼ぶ、より魅力的なコンテンツやキャンペーンを作成します。",
|
|
2601
2601
|
"_REALTIME_FACEBOOK_MESSENGER_OBJ_5": "キャンペーンの効果を測定する",
|
|
2602
2602
|
"_REALTIME_FACEBOOK_MESSENGER_DES_5": "インタラクション データを分析して、顧客がさまざまなメッセージにどのように反応するかを確認することで、マーケティング キャンペーンの影響を追跡します。",
|
|
2603
|
-
"_REALTIME_TIKTOK_LEAD": "「Tiktok Lead」テンプレートを使用すると、TikTok
|
|
2603
|
+
"_REALTIME_TIKTOK_LEAD": "「Tiktok Lead」テンプレートを使用すると、TikTok 広告を通じてフォームに記入するユーザーからのデータの収集と管理がシームレスかつ効率的になりました。このリアルタイム機能により、視聴者に関する洞察が即座に得られるため、マーケティング活動を微調整し、より高いエンゲージメントとコンバージョンを促進することができます。",
|
|
2604
2604
|
"_REALTIME_TIKTOK_LEAD_OBJ_1": "リードを顧客に変える",
|
|
2605
2605
|
"_REALTIME_TIKTOK_LEAD_DES_1": "収集した情報を利用して潜在的な見込み客と直接連絡を取ったり相談したりして、彼らを有料顧客に変えます。",
|
|
2606
2606
|
"_REALTIME_TIKTOK_LEAD_OBJ_2": "マーケティング活動をパーソナライズする",
|
|
@@ -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à
|
|
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ọ",
|
|
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",
|
|
@@ -2101,13 +2101,13 @@
|
|
|
2101
2101
|
"_PREDICT_MODEL_LABEL_VERY_LOW": "Rất thấp",
|
|
2102
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
|
-
"_PREDICT_MODEL_CREATE_NEW_SEGMENT": "Tạo phân
|
|
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ó",
|
|
2106
2106
|
"_PREDICT_MODEL_CREATE_NEW_ATTRIBUTE": "Tạo thuộc tính mới",
|
|
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",
|
|
@@ -2257,6 +2257,9 @@
|
|
|
2257
2257
|
"_ZALO_ACTION_SMS": "Nhắn tin",
|
|
2258
2258
|
"_ZALO_ACTION_PHONE": "Gọi điện",
|
|
2259
2259
|
"_ZALO_RICH_TIME_LIMIT_DES": "Tin truyền thông chỉ có thể gửi trong khung giờ từ 06:00 AM đến 10:00 PM. Để hạn chế gửi thất bại, hãy đảm bảo ràng buộc khung thời gian gửi ở Step 1 - Settings. ",
|
|
2260
|
+
"_CONTENT_TABL": "Nội dung bổ sung",
|
|
2261
|
+
"_CONTENT_TABL_KEY": "Nhãn",
|
|
2262
|
+
"_CONTENT_TABL_VALUE": "Nội dung",
|
|
2260
2263
|
"_CONTENT_TABL_ERR_MESS": "Nhãn của bảng không được trùng nhau",
|
|
2261
2264
|
"_CONTENT_TABL_HINT": "Lần lượt, nhãn & nội dung không được quá 25 & 100 ký tự",
|
|
2262
2265
|
"_ZNS_NO_TEMP": "Không có mẫu tin nhắn nào",
|
package/es/utils/date.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export declare const startOfMonth: (date: Date) => Date;
|
|
|
4
4
|
export declare const differenceInMonths: (dateA: Date, dateB: Date) => number;
|
|
5
5
|
export declare const subMonths: (date: Date, number: number) => Date;
|
|
6
6
|
export declare const formatDateTZ: (date: Date | string, format: string, timezone?: string) => string;
|
|
7
|
+
export declare const formatUTCDateTZ: (utcDate: Date | string, format: string, timezone?: string) => string;
|
|
7
8
|
export declare const formatDate: (date: Date | string, format: string) => string;
|
|
8
9
|
/** Portal Settings */
|
|
9
10
|
export declare function getDateFormat(date: TPortalFormatDate, format: string): any;
|
package/es/utils/date.js
CHANGED
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
// Libraries
|
|
2
2
|
import dayjs from 'dayjs';
|
|
3
3
|
import timezone from 'dayjs/plugin/timezone';
|
|
4
|
+
import utc from 'dayjs/plugin/utc';
|
|
4
5
|
// Utils
|
|
5
6
|
import { getPortalFormatDateTime, getPortalTimeZone, getUserLocaleLanguage } from './portal';
|
|
6
7
|
// Constants
|
|
7
8
|
import { PORTAL_MAP_DATE, PORTAL_MAP_TIME } from '../constants';
|
|
8
9
|
import { safeParse } from './common';
|
|
10
|
+
dayjs.extend(utc);
|
|
9
11
|
dayjs.extend(timezone);
|
|
10
12
|
export const startOfMonth = (date) => dayjs(date).startOf('month').toDate();
|
|
11
13
|
export const differenceInMonths = (dateA, dateB) => dayjs(dateA).diff(dateB, 'month');
|
|
12
14
|
export const subMonths = (date, number) => dayjs(date).subtract(number, 'month').toDate();
|
|
13
15
|
export const formatDateTZ = (date, format, timezone) => {
|
|
14
16
|
const defaultTimezone = getPortalTimeZone() || Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
15
|
-
|
|
17
|
+
// console.log({ timezone });
|
|
18
|
+
return dayjs(date)
|
|
19
|
+
.tz(timezone || defaultTimezone)
|
|
20
|
+
.format(format);
|
|
21
|
+
};
|
|
22
|
+
export const formatUTCDateTZ = (utcDate, format, timezone) => {
|
|
23
|
+
const defaultTimezone = getPortalTimeZone() || Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
24
|
+
const dateTimezone = dayjs.utc(utcDate).tz(timezone || defaultTimezone);
|
|
25
|
+
return dateTimezone.format(format);
|
|
16
26
|
};
|
|
17
27
|
export const formatDate = (date, format) => dayjs(date).format(format);
|
|
18
28
|
/** Portal Settings */
|
package/es/utils/portal.d.ts
CHANGED
|
@@ -68,12 +68,12 @@ export declare const UserAndPortalDefaultConfig: {
|
|
|
68
68
|
getByKey: (key: string) => any;
|
|
69
69
|
};
|
|
70
70
|
export declare function getPortalFormatDateTimeLong(): any;
|
|
71
|
-
export declare function getPortalTimeZone():
|
|
72
|
-
export declare function getUserLocaleLanguage():
|
|
73
|
-
export declare function getPortalFormatDateTime(): any
|
|
71
|
+
export declare function getPortalTimeZone(): string;
|
|
72
|
+
export declare function getUserLocaleLanguage(): string;
|
|
73
|
+
export declare function getPortalFormatDateTime(): Record<string, any>;
|
|
74
74
|
export declare function getPortalFormatCurrency(): any;
|
|
75
75
|
export declare function getPortalCurrency(): any;
|
|
76
|
-
export declare function getPortalFormatNumber(): any
|
|
76
|
+
export declare function getPortalFormatNumber(): Record<string, any>;
|
|
77
77
|
export declare function getPortalFormatPercentage(): any;
|
|
78
78
|
export declare function safeParseDisplayFormatNumber(value: number, displayFormat?: Record<string, any>): string;
|
|
79
79
|
export declare function safeParseDisplayFormatCurrency(value: number, displayFormat?: Record<string, any>): string;
|
package/es/utils/portal.js
CHANGED
|
@@ -129,13 +129,16 @@ export function getPortalFormatDateTimeLong() {
|
|
|
129
129
|
'ddd, MMM D, YYYY h:mm A');
|
|
130
130
|
}
|
|
131
131
|
export function getPortalTimeZone() {
|
|
132
|
-
|
|
132
|
+
const timezone = UserAndPortalDefaultConfig.getByKey(PORTAL_KEYS.TIME_ZONE);
|
|
133
|
+
// const timezone = 'America/Los_Angeles';
|
|
134
|
+
return timezone || Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
133
135
|
}
|
|
134
136
|
export function getUserLocaleLanguage() {
|
|
135
|
-
|
|
137
|
+
const localeLanguage = UserAndPortalDefaultConfig.getByKey(PORTAL_KEYS.USER_LANGUAGE);
|
|
138
|
+
return localeLanguage || 'EN';
|
|
136
139
|
}
|
|
137
140
|
export function getPortalFormatDateTime() {
|
|
138
|
-
return UserAndPortalDefaultConfig.getByKey(PORTAL_KEYS.DATE_TIME_FORMAT);
|
|
141
|
+
return UserAndPortalDefaultConfig.getByKey(PORTAL_KEYS.DATE_TIME_FORMAT) || '';
|
|
139
142
|
}
|
|
140
143
|
export function getPortalFormatCurrency() {
|
|
141
144
|
return UserAndPortalDefaultConfig.getByKey(PORTAL_KEYS.CURRENCY_FORMAT);
|