stream-chat-react-native-core 4.7.3 → 4.8.0-beta.1
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/lib/commonjs/i18n/he.json +67 -0
- package/lib/commonjs/index.js +9 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/Streami18n.js +5 -0
- package/lib/commonjs/utils/Streami18n.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/i18n/he.json +67 -0
- package/lib/module/index.js +9 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/Streami18n.js +5 -0
- package/lib/module/utils/Streami18n.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/i18n/he.json +67 -0
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/utils/Streami18n.d.ts +1 -4
- package/package.json +1 -1
- package/src/i18n/he.json +67 -0
- package/src/index.ts +1 -0
- package/src/utils/Streami18n.ts +6 -3
- package/src/version.json +1 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"1 Reply": "תגובה אחת",
|
|
3
|
+
"1 Thread Reply": "תגובה אחת לשרשור",
|
|
4
|
+
"Allow access to your Gallery": "אפשר גישה לגלריה שלך",
|
|
5
|
+
"Also send to channel": "שלח/י הודעה לשיחה",
|
|
6
|
+
"Are you sure you want to permanently delete this message?": "האם את/ה בטוח/ה שאת/ה רוצה למחוק את ההודעה הזו לצמיתות?",
|
|
7
|
+
"Block User": "חסום משתמש",
|
|
8
|
+
"Cancel": "ביטול",
|
|
9
|
+
"Cannot Flag Message": "סימון הודעה לא אפשרי",
|
|
10
|
+
"Copy Message": "העתק/י הודעה",
|
|
11
|
+
"Delete": "מחק",
|
|
12
|
+
"Delete Message": "מחק/י הודעה",
|
|
13
|
+
"Do you want to send a copy of this message to a moderator for further investigation?": "האם את/ה רוצה לשלוח עותק של הודעה זו למנחה להמשך חקירה?",
|
|
14
|
+
"Edit Message": "ערוך הודעה",
|
|
15
|
+
"Editing Message": "הודעה בעריכה",
|
|
16
|
+
"Emoji matching": "התאמת אמוג'י",
|
|
17
|
+
"Empty message...": "הודעה ריקה...",
|
|
18
|
+
"Error loading": "שגיאה ארעה בעת הטעינה",
|
|
19
|
+
"Error loading channel list...": "שגיאה ארעה בטעינת השיחות...",
|
|
20
|
+
"Error loading messages for this channel...": "שגיאה ארעה בטעינת הודעות עבור שיחה זאת...",
|
|
21
|
+
"Error while loading, please reload/refresh": "שגיאה ארעה בזמן הטעינה, אנא טען מחדש/רענן",
|
|
22
|
+
"File type not supported": "סוג הקובץ אינו נתמך",
|
|
23
|
+
"Flag": "סמן",
|
|
24
|
+
"Flag Message": "סמן הודעה",
|
|
25
|
+
"Flag action failed either due to a network issue or the message is already flagged": "פעולת הסימון נכשלה בגלל בעיית רשת או שההודעה כבר סומנה.",
|
|
26
|
+
"Instant Commands": "פעולות מיידיות",
|
|
27
|
+
"Links are disabled": "הקישורים מבוטלים",
|
|
28
|
+
"Loading channels...": "השיחות בטעינה...",
|
|
29
|
+
"Loading messages...": "ההודעות בטעינה..",
|
|
30
|
+
"Loading...": "טוען...",
|
|
31
|
+
"Message Reactions": "תגובות להודעה",
|
|
32
|
+
"Message deleted": "ההודעה נמחקה",
|
|
33
|
+
"Message flagged": "ההודעה סומנה",
|
|
34
|
+
"Mute User": "השתק/י משתמש",
|
|
35
|
+
"Not supported": "לא נתמך",
|
|
36
|
+
"Nothing yet...": "אינפורמציה תתקבל בהמשך...",
|
|
37
|
+
"Ok": "אוקיי",
|
|
38
|
+
"Only visible to you": "גלוי רק לך",
|
|
39
|
+
"Photo": "תמונה",
|
|
40
|
+
"Photos": "תמונות",
|
|
41
|
+
"Pin to Conversation": "הצמד/י לשיחה",
|
|
42
|
+
"Please enable access to your photos and videos so you can share them.": "אפשר/י גישה לתמונות ולסרטונים שלך כדי שתוכל/י לשתף אותם.",
|
|
43
|
+
"Please select a channel first": "אנא בחר/י שיחה תחילה",
|
|
44
|
+
"Reconnecting...": "מתחבר מחדש...",
|
|
45
|
+
"Reply": "השב/י",
|
|
46
|
+
"Reply to Message": "השב/י להודעה",
|
|
47
|
+
"Resend": "שלח/י שוב",
|
|
48
|
+
"Search GIFs": "חפש/י GIFs",
|
|
49
|
+
"Send a message": "שלח/י הודעה",
|
|
50
|
+
"Sending links is not allowed in this conversation": "שליחת קישורים אינה מותרת בשיחה זו",
|
|
51
|
+
"Slow mode ON": "מצב איטי מופעל",
|
|
52
|
+
"The message has been reported to a moderator.": "ההודעה דווחה למנהל",
|
|
53
|
+
"Thread Reply": "הגב/י בשרשור",
|
|
54
|
+
"Unblock User": "בטל/י חסימת משתמש",
|
|
55
|
+
"Unknown User": "משתמש לא ידוע",
|
|
56
|
+
"Unmute User": "בטל/י השתקת משתמש",
|
|
57
|
+
"Unpin from Conversation": "בטל/י הצמדה לשיחה",
|
|
58
|
+
"Unread Messages": "הודעות שטרם נקרו",
|
|
59
|
+
"You": "את/ה",
|
|
60
|
+
"You can't send messages in this channel": "את/ב לא יכול/ה לשלוח הודעות בשיחה זו",
|
|
61
|
+
"{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} ו-{{ nonSelfUserLength }} משתמש/ים אחר/ים מקלידים",
|
|
62
|
+
"{{ index }} of {{ photoLength }}": "{{ index }} מתוך {{ photoLength }}",
|
|
63
|
+
"{{ replyCount }} Replies": "{{ replyCount }} תגובות",
|
|
64
|
+
"{{ replyCount }} Thread Replies": "{{ replyCount }} תגובות שרשור",
|
|
65
|
+
"{{ user }} is typing": "{{ user }} מקליד/ה",
|
|
66
|
+
"🏙 Attachment...": "🏙 קובץ מצורף..."
|
|
67
|
+
}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -13,6 +13,7 @@ var _exportNames = {
|
|
|
13
13
|
nlTranslations: true,
|
|
14
14
|
ruTranslations: true,
|
|
15
15
|
trTranslations: true,
|
|
16
|
+
heTranslations: true,
|
|
16
17
|
version: true
|
|
17
18
|
};
|
|
18
19
|
Object.defineProperty(exports, "NetInfo", {
|
|
@@ -33,6 +34,12 @@ Object.defineProperty(exports, "frTranslations", {
|
|
|
33
34
|
return _fr["default"];
|
|
34
35
|
}
|
|
35
36
|
});
|
|
37
|
+
Object.defineProperty(exports, "heTranslations", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function get() {
|
|
40
|
+
return _he["default"];
|
|
41
|
+
}
|
|
42
|
+
});
|
|
36
43
|
Object.defineProperty(exports, "hiTranslations", {
|
|
37
44
|
enumerable: true,
|
|
38
45
|
get: function get() {
|
|
@@ -204,5 +211,7 @@ var _ru = _interopRequireDefault(require("./i18n/ru.json"));
|
|
|
204
211
|
|
|
205
212
|
var _tr = _interopRequireDefault(require("./i18n/tr.json"));
|
|
206
213
|
|
|
214
|
+
var _he = _interopRequireDefault(require("./i18n/he.json"));
|
|
215
|
+
|
|
207
216
|
var _version = require("./version.json");
|
|
208
217
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA","sourcesContent":["export * from './components';\nexport * from './hooks';\nexport { registerNativeHandlers, NetInfo } from './native';\nexport * from './contexts';\nexport * from './emoji-data/compiled';\n\nexport * from './icons';\n\nexport * from './types/types';\n\nexport * from './utils/Streami18n';\nexport * from './utils/utils';\n\nexport { default as enTranslations } from './i18n/en.json';\nexport { default as frTranslations } from './i18n/fr.json';\nexport { default as hiTranslations } from './i18n/hi.json';\nexport { default as itTranslations } from './i18n/it.json';\nexport { default as nlTranslations } from './i18n/nl.json';\nexport { default as ruTranslations } from './i18n/ru.json';\nexport { default as trTranslations } from './i18n/tr.json';\nexport { default as heTranslations } from './i18n/he.json';\n\nexport { version } from './version.json';\n"]}
|
|
@@ -35,6 +35,8 @@ var _en2 = _interopRequireDefault(require("../i18n/en.json"));
|
|
|
35
35
|
|
|
36
36
|
var _fr2 = _interopRequireDefault(require("../i18n/fr.json"));
|
|
37
37
|
|
|
38
|
+
var _he2 = _interopRequireDefault(require("../i18n/he.json"));
|
|
39
|
+
|
|
38
40
|
var _hi2 = _interopRequireDefault(require("../i18n/hi.json"));
|
|
39
41
|
|
|
40
42
|
var _it2 = _interopRequireDefault(require("../i18n/it.json"));
|
|
@@ -65,6 +67,8 @@ require("dayjs/locale/ru");
|
|
|
65
67
|
|
|
66
68
|
require("dayjs/locale/tr");
|
|
67
69
|
|
|
70
|
+
require("dayjs/locale/he");
|
|
71
|
+
|
|
68
72
|
require("dayjs/locale/en");
|
|
69
73
|
|
|
70
74
|
var defaultNS = 'translation';
|
|
@@ -210,6 +214,7 @@ var Streami18n = function () {
|
|
|
210
214
|
this.translations = {
|
|
211
215
|
en: (0, _defineProperty2["default"])({}, defaultNS, _en2["default"]),
|
|
212
216
|
fr: (0, _defineProperty2["default"])({}, defaultNS, _fr2["default"]),
|
|
217
|
+
he: (0, _defineProperty2["default"])({}, defaultNS, _he2["default"]),
|
|
213
218
|
hi: (0, _defineProperty2["default"])({}, defaultNS, _hi2["default"]),
|
|
214
219
|
it: (0, _defineProperty2["default"])({}, defaultNS, _it2["default"]),
|
|
215
220
|
ja: (0, _defineProperty2["default"])({}, defaultNS, _ja2["default"]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Streami18n.ts"],"names":["defaultNS","defaultLng","Dayjs","extend","updateLocale","format","L","LL","LLL","LLLL","LT","LTS","calendar","lastDay","lastWeek","nextDay","nextWeek","sameDay","sameElse","meridiem","hour","meridiemHour","meridiemParse","en_locale","formats","months","relativeTime","weekdays","isDayJs","dateTimeParser","undefined","defaultStreami18nOptions","DateTimeParser","dayjsLocaleConfigForLanguage","debug","disableDateTimeTranslations","language","logger","msg","console","warn","Streami18n","options","i18nextConfig","i18nInstance","i18n","createInstance","setLanguageCallback","initialized","t","key","translations","en","enTranslations","fr","frTranslations","hi","hiTranslations","it","itTranslations","ja","jaTranslations","ko","koTranslations","nl","nlTranslations","ru","ruTranslations","tr","trTranslations","dayjsLocales","localeExists","isCustomDateTimeParser","Object","keys","Ls","indexOf","validateCurrentLanguage","availableLanguages","currentLanguage","getAvailableLanguages","geti18Instance","getTranslations","finalOptions","LocalizedFormat","localeData","error","Error","JSON","stringify","translationsForLanguage","fallbackLng","interpolation","escapeValue","keySeparator","lng","nsSeparator","parseMissingKeyHandler","addOrUpdateLocale","tDateTimeParser","timestamp","locale","init","resources","translation","customDayjsLocale","addResources","config","name","changeLanguage","callback"],"mappings":"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","sourcesContent":["import Dayjs from 'dayjs';\nimport calendar from 'dayjs/plugin/calendar';\nimport localeData from 'dayjs/plugin/localeData';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport i18n, { FallbackLng, TFunction } from 'i18next';\n\nimport type moment from 'moment';\n\nimport type { TDateTimeParser } from '../contexts/translationContext/TranslationContext';\nimport enTranslations from '../i18n/en.json';\nimport frTranslations from '../i18n/fr.json';\nimport hiTranslations from '../i18n/hi.json';\nimport itTranslations from '../i18n/it.json';\nimport jaTranslations from '../i18n/ja.json';\nimport koTranslations from '../i18n/ko.json';\nimport nlTranslations from '../i18n/nl.json';\nimport ruTranslations from '../i18n/ru.json';\nimport trTranslations from '../i18n/tr.json';\n\nconst defaultNS = 'translation';\nconst defaultLng = 'en';\n\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/hi';\nimport 'dayjs/locale/it';\nimport 'dayjs/locale/ja';\nimport 'dayjs/locale/ko';\nimport 'dayjs/locale/nl';\nimport 'dayjs/locale/ru';\nimport 'dayjs/locale/tr';\n\n/**\n * These locale imports also set these locales globally.\n * So as a last step we import the english locale to make\n * sure we don't mess up languages in other places in the app.\n */\nimport 'dayjs/locale/en';\n\nimport type { DefaultStreamChatGenerics } from '../types/types';\n\nDayjs.extend(updateLocale);\n\nDayjs.updateLocale('en', {\n format: {\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n LT: 'hh:mmA',\n LTS: 'HH:mm:ss',\n },\n});\n\nDayjs.updateLocale('nl', {\n calendar: {\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n sameDay: '[vandaag om] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('it', {\n calendar: {\n lastDay: '[Ieri alle] LT',\n lastWeek: '[lo scorso] dddd [alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n sameDay: '[Oggi alle] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('hi', {\n calendar: {\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n sameDay: '[आज] LT',\n sameElse: 'L',\n },\n\n /**\n * Hindi notation for meridiems are quite fuzzy in practice. While there exists\n * a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n */\n meridiem(hour: number) {\n if (hour < 4) return 'रात';\n if (hour < 10) return 'सुबह';\n if (hour < 17) return 'दोपहर';\n if (hour < 20) return 'शाम';\n return 'रात';\n },\n\n meridiemHour(hour: number, meridiem: string) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') return hour < 4 ? hour : hour + 12;\n if (meridiem === 'सुबह') return hour;\n if (meridiem === 'दोपहर') return hour >= 10 ? hour : hour + 12;\n if (meridiem === 'शाम') return hour + 12;\n return hour;\n },\n\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n});\n\nDayjs.updateLocale('fr', {\n calendar: {\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n sameDay: '[Aujourd’hui à] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('tr', {\n calendar: {\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n sameDay: '[bugün saat] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('ru', {\n calendar: {\n lastDay: '[Вчера, в] LT',\n nextDay: '[Завтра, в] LT',\n sameDay: '[Сегодня, в] LT',\n },\n});\n\nconst en_locale = {\n formats: {},\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n relativeTime: {},\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n};\n\n// Type guards to check DayJs\nconst isDayJs = (dateTimeParser: typeof Dayjs | typeof moment): dateTimeParser is typeof Dayjs =>\n (dateTimeParser as typeof Dayjs).extend !== undefined;\n\ntype Options = {\n DateTimeParser?: typeof Dayjs | typeof moment;\n dayjsLocaleConfigForLanguage?: Partial<ILocale>;\n debug?: boolean;\n disableDateTimeTranslations?: boolean;\n language?: string;\n logger?: (msg?: string) => void;\n translationsForLanguage?: Partial<typeof enTranslations>;\n};\n\ntype I18NextConfig = {\n debug: boolean;\n fallbackLng: false | FallbackLng;\n interpolation: { escapeValue: boolean };\n keySeparator: false | string;\n lng: string;\n nsSeparator: false | string;\n parseMissingKeyHandler: (key: string) => string;\n};\n\n/**\n * Wrapper around [i18next](https://www.i18next.com/) class for Stream related translations.\n * Instance of this class should be provided to Chat component to handle translations.\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. Russian (ru)\n * 4. Turkish (tr)\n * 5. French (fr)\n * 6. Italian (it)\n * 7. Hindi (hi)\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n({ language 'nl' });\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * translationsForLanguage: {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * }\n * });\n *\n * If you would like to register additional languages, use registerTranslation. You can add as many languages as you want:\n *\n * i18n.registerTranslation('zh', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language as well.\n *\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation('mr', {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * ## Datetime translations\n *\n * Stream react chat components uses [dayjs](https://day.js.org/en/) internally by default to format datetime stamp.\n * e.g., in ChannelPreview, MessageContent components.\n * Dayjs has locale support as well - https://day.js.org/docs/en/i18n/i18n\n * Dayjs is a lightweight alternative to Momentjs with the same modern API.\n *\n * Dayjs provides locale config for plenty of languages, you can check the whole list of locale configs at following url\n * https://github.com/iamkun/dayjs/tree/dev/src/locale\n *\n * You can either provide the dayjs locale config while registering\n * language with Streami18n (either via constructor or registerTranslation()) or you can provide your own Dayjs or Moment instance\n * to Streami18n constructor, which will be then used internally (using the language locale) in components.\n *\n * 1. Via language registration\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * dayjsLocaleConfigForLanguage: {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * });\n * ```\n *\n * Similarly, you can add locale config for moment while registering translation via `registerTranslation` function.\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation(\n * 'mr',\n * {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * },\n * {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * );\n *```\n * 2. Provide your own Moment object\n *\n * ```js\n * import 'moment/locale/nl';\n * import 'moment/locale/it';\n * // or if you want to include all locales\n * import 'moment/min/locales';\n *\n * import Moment from moment\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Moment\n * })\n * ```\n *\n * 3. Provide your own Dayjs object\n *\n * ```js\n * import Dayjs from 'dayjs'\n *\n * import 'dayjs/locale/nl';\n * import 'dayjs/locale/it';\n * // or if you want to include all locales\n * import 'dayjs/min/locales';\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Dayjs\n * })\n * ```\n * If you would like to stick with english language for date-times in Stream components, you can set `disableDateTimeTranslations` to true.\n *\n */\nconst defaultStreami18nOptions = {\n DateTimeParser: Dayjs,\n dayjsLocaleConfigForLanguage: null,\n debug: false,\n disableDateTimeTranslations: false,\n language: 'en',\n logger: (msg?: string) => console.warn(msg),\n};\n\nexport class Streami18n {\n i18nInstance = i18n.createInstance();\n Dayjs = null;\n setLanguageCallback: (t: TFunction) => void = () => null;\n initialized = false;\n\n t: TFunction = (key: string) => key;\n tDateTimeParser: TDateTimeParser;\n\n translations: {\n [key: string]: {\n [key: string]: Partial<typeof enTranslations> | DefaultStreamChatGenerics;\n };\n } = {\n en: { [defaultNS]: enTranslations },\n fr: { [defaultNS]: frTranslations },\n hi: { [defaultNS]: hiTranslations },\n it: { [defaultNS]: itTranslations },\n ja: { [defaultNS]: jaTranslations },\n ko: { [defaultNS]: koTranslations },\n nl: { [defaultNS]: nlTranslations },\n ru: { [defaultNS]: ruTranslations },\n tr: { [defaultNS]: trTranslations },\n };\n\n /**\n * dayjs.defineLanguage('nl') also changes the global locale. We don't want to do that\n * when a user calls the registerTranslation() function. So instead we will store the\n * locale configs given to the registerTranslation() function in `dayjsLocales` object,\n * and register the required locale with moment when setLanguage is called.\n */\n dayjsLocales: { [key: string]: Partial<ILocale> } = {};\n\n /**\n * Initialize properties used in constructor\n */\n logger: (msg?: string) => void;\n currentLanguage: string;\n DateTimeParser: typeof Dayjs | typeof moment;\n isCustomDateTimeParser: boolean;\n i18nextConfig: I18NextConfig;\n\n /**\n * Constructor accepts following options:\n * - language (String) default: 'en'\n * Language code e.g., en, tr\n *\n * - translationsForLanguage (object)\n * Translations object. Please check src/i18n/en.json for example.\n *\n * - disableDateTimeTranslations (boolean) default: false\n * Disable translations for date-times\n *\n * - debug (boolean) default: false\n * Enable debug mode in internal i18n class\n *\n * - logger (function) default: () => {}\n * Logger function to log warnings/errors from this class\n *\n * - dayjsLocaleConfigForLanguage (object) default: 'enConfig'\n * [Config object](https://momentjs.com/docs/#/i18n/changing-locale/) for internal moment object,\n * corresponding to language (param)\n *\n * - DateTimeParser (function) Moment or Dayjs instance/function.\n * Make sure to load all the required locales in this Moment or Dayjs instance that you will be provide to Streami18n\n *\n * @param {*} options\n */\n constructor(options: Options = {}, i18nextConfig: Partial<I18NextConfig> = {}) {\n const finalOptions = {\n ...defaultStreami18nOptions,\n ...options,\n };\n\n // Prepare the i18next configuration.\n this.logger = finalOptions.logger;\n\n this.currentLanguage = finalOptions.language;\n this.DateTimeParser = finalOptions.DateTimeParser;\n\n try {\n /**\n * This is a shallow check to see if the given parser is an instance of Dayjs.\n * For some reason Dayjs.isDayjs(this.DateTimeParser()) doesn't work.\n */\n if (this.DateTimeParser && isDayJs(this.DateTimeParser)) {\n this.DateTimeParser.extend(LocalizedFormat);\n this.DateTimeParser.extend(calendar);\n this.DateTimeParser.extend(localeData);\n this.DateTimeParser.extend(relativeTime);\n }\n } catch (error) {\n throw new Error(\n `Streami18n: Looks like you wanted to provide a Dayjs instance but something went wrong while adding plugins ${JSON.stringify(\n error,\n )}`,\n );\n }\n\n this.isCustomDateTimeParser = !!options.DateTimeParser;\n const translationsForLanguage = finalOptions.translationsForLanguage;\n\n if (translationsForLanguage) {\n this.translations[this.currentLanguage] = {\n [defaultNS]:\n this.translations[this.currentLanguage] &&\n this.translations[this.currentLanguage][defaultNS]\n ? {\n ...this.translations[this.currentLanguage][defaultNS],\n ...translationsForLanguage,\n }\n : translationsForLanguage,\n };\n }\n\n // If translations don't exist for given language, then set it as empty object.\n if (!this.translations[this.currentLanguage]) {\n this.translations[this.currentLanguage] = {\n [defaultNS]: {},\n };\n }\n\n this.i18nextConfig = {\n debug: finalOptions.debug,\n fallbackLng: false,\n interpolation: { escapeValue: false },\n keySeparator: false,\n lng: this.currentLanguage,\n nsSeparator: false,\n\n parseMissingKeyHandler: (key: string) => {\n this.logger(`Streami18n: Missing translation for key: ${key}`);\n\n return key;\n },\n ...i18nextConfig,\n };\n\n this.validateCurrentLanguage();\n\n const dayjsLocaleConfigForLanguage = finalOptions.dayjsLocaleConfigForLanguage;\n\n if (dayjsLocaleConfigForLanguage) {\n this.addOrUpdateLocale(this.currentLanguage, {\n ...dayjsLocaleConfigForLanguage,\n });\n } else if (!this.localeExists(this.currentLanguage)) {\n this.logger(\n `Streami18n: Streami18n(...) - Locale config for ${this.currentLanguage} does not exist in momentjs.` +\n `Please import the locale file using \"import 'moment/locale/${this.currentLanguage}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n this.tDateTimeParser = (timestamp) => {\n if (finalOptions.disableDateTimeTranslations || !this.localeExists(this.currentLanguage)) {\n /**\n * TS needs to know which is being called to accept the chain call\n */\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n }\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n };\n }\n\n /**\n * Initializes the i18next instance with configuration (which enables natural language as default keys)\n */\n async init() {\n this.validateCurrentLanguage();\n\n try {\n this.t = await this.i18nInstance.init({\n ...this.i18nextConfig,\n lng: this.currentLanguage,\n resources: this.translations,\n });\n this.initialized = true;\n } catch (error) {\n this.logger(`Something went wrong with init: ${JSON.stringify(error)}`);\n }\n\n return {\n t: this.t,\n tDateTimeParser: this.tDateTimeParser,\n };\n }\n\n localeExists = (language: string) => {\n if (this.isCustomDateTimeParser) return true;\n\n return Object.keys(Dayjs.Ls).indexOf(language) > -1;\n };\n\n validateCurrentLanguage = () => {\n const availableLanguages = Object.keys(this.translations);\n if (availableLanguages.indexOf(this.currentLanguage) === -1) {\n this.logger(\n `Streami18n: '${this.currentLanguage}' language is not registered.` +\n ` Please make sure to call streami18n.registerTranslation('${this.currentLanguage}', {...}) or ` +\n `use one the built-in supported languages - ${this.getAvailableLanguages()}`,\n );\n\n this.currentLanguage = defaultLng;\n }\n };\n\n /** Returns an instance of i18next used within this class instance */\n geti18Instance = () => this.i18nInstance;\n\n /** Returns list of available languages. */\n getAvailableLanguages = () => Object.keys(this.translations);\n\n /** Returns all the translation dictionary for all inbuilt-languages */\n getTranslations = () => this.translations;\n\n /**\n * Returns current version translator function.\n */\n async getTranslators() {\n if (!this.initialized) {\n if (this.dayjsLocales[this.currentLanguage]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n return await this.init();\n } else {\n return {\n t: this.t,\n tDateTimeParser: this.tDateTimeParser,\n };\n }\n }\n\n /**\n * Register translation\n */\n registerTranslation(\n language: string,\n translation: Partial<typeof enTranslations> | DefaultStreamChatGenerics,\n customDayjsLocale?: Partial<ILocale>,\n ) {\n if (!translation) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) called without translation`,\n );\n return;\n }\n\n if (!this.translations[language]) {\n this.translations[language] = { [defaultNS]: translation };\n } else {\n this.translations[language][defaultNS] = translation;\n }\n\n if (customDayjsLocale) {\n this.dayjsLocales[language] = { ...customDayjsLocale };\n } else if (!this.localeExists(language)) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) - ` +\n `Locale config for ${language} does not exist in Dayjs.` +\n `Please import the locale file using \"import 'dayjs/locale/${language}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n if (this.initialized) {\n this.i18nInstance.addResources(language, defaultNS, translation);\n }\n }\n\n addOrUpdateLocale(key: string, config: Partial<ILocale>) {\n if (this.localeExists(key)) {\n Dayjs.updateLocale(key, { ...config });\n } else {\n // Merging the custom locale config with en config, so missing keys can default to english.\n Dayjs.locale({ name: key, ...en_locale, ...config }, undefined, true);\n }\n }\n\n /**\n * Changes the language.\n */\n async setLanguage(language: string) {\n this.currentLanguage = language;\n\n if (!this.initialized) return;\n\n try {\n const t = await this.i18nInstance.changeLanguage(language);\n if (this.dayjsLocales[language]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n this.setLanguageCallback(t);\n\n return t;\n } catch (error) {\n this.logger(`Failed to set language: ${JSON.stringify(error)}`);\n return this.t;\n }\n }\n\n registerSetLanguageCallback(callback: (t: TFunction) => void) {\n this.setLanguageCallback = callback;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Streami18n.ts"],"names":["defaultNS","defaultLng","Dayjs","extend","updateLocale","format","L","LL","LLL","LLLL","LT","LTS","calendar","lastDay","lastWeek","nextDay","nextWeek","sameDay","sameElse","meridiem","hour","meridiemHour","meridiemParse","en_locale","formats","months","relativeTime","weekdays","isDayJs","dateTimeParser","undefined","defaultStreami18nOptions","DateTimeParser","dayjsLocaleConfigForLanguage","debug","disableDateTimeTranslations","language","logger","msg","console","warn","Streami18n","options","i18nextConfig","i18nInstance","i18n","createInstance","setLanguageCallback","initialized","t","key","translations","en","enTranslations","fr","frTranslations","he","heTranslations","hi","hiTranslations","it","itTranslations","ja","jaTranslations","ko","koTranslations","nl","nlTranslations","ru","ruTranslations","tr","trTranslations","dayjsLocales","localeExists","isCustomDateTimeParser","Object","keys","Ls","indexOf","validateCurrentLanguage","availableLanguages","currentLanguage","getAvailableLanguages","geti18Instance","getTranslations","finalOptions","LocalizedFormat","localeData","error","Error","JSON","stringify","translationsForLanguage","fallbackLng","interpolation","escapeValue","keySeparator","lng","nsSeparator","parseMissingKeyHandler","addOrUpdateLocale","tDateTimeParser","timestamp","locale","init","resources","translation","customDayjsLocale","addResources","config","name","changeLanguage","callback"],"mappings":"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","sourcesContent":["import Dayjs from 'dayjs';\nimport calendar from 'dayjs/plugin/calendar';\nimport localeData from 'dayjs/plugin/localeData';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport i18n, { FallbackLng, TFunction } from 'i18next';\n\nimport type moment from 'moment';\n\nimport type { TDateTimeParser } from '../contexts/translationContext/TranslationContext';\nimport enTranslations from '../i18n/en.json';\nimport frTranslations from '../i18n/fr.json';\nimport heTranslations from '../i18n/he.json';\nimport hiTranslations from '../i18n/hi.json';\nimport itTranslations from '../i18n/it.json';\nimport jaTranslations from '../i18n/ja.json';\nimport koTranslations from '../i18n/ko.json';\nimport nlTranslations from '../i18n/nl.json';\nimport ruTranslations from '../i18n/ru.json';\nimport trTranslations from '../i18n/tr.json';\n\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/hi';\nimport 'dayjs/locale/it';\nimport 'dayjs/locale/ja';\nimport 'dayjs/locale/ko';\nimport 'dayjs/locale/nl';\nimport 'dayjs/locale/ru';\nimport 'dayjs/locale/tr';\nimport 'dayjs/locale/he';\n\n/**\n * These locale imports also set these locales globally.\n * So as a last step we import the english locale to make\n * sure we don't mess up languages in other places in the app.\n */\nimport 'dayjs/locale/en';\n\nimport type { DefaultStreamChatGenerics } from '../types/types';\n\nconst defaultNS = 'translation';\nconst defaultLng = 'en';\n\nDayjs.extend(updateLocale);\n\nDayjs.updateLocale('en', {\n format: {\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n LT: 'hh:mmA',\n LTS: 'HH:mm:ss',\n },\n});\n\nDayjs.updateLocale('nl', {\n calendar: {\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n sameDay: '[vandaag om] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('it', {\n calendar: {\n lastDay: '[Ieri alle] LT',\n lastWeek: '[lo scorso] dddd [alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n sameDay: '[Oggi alle] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('hi', {\n calendar: {\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n sameDay: '[आज] LT',\n sameElse: 'L',\n },\n\n /**\n * Hindi notation for meridiems are quite fuzzy in practice. While there exists\n * a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n */\n meridiem(hour: number) {\n if (hour < 4) return 'रात';\n if (hour < 10) return 'सुबह';\n if (hour < 17) return 'दोपहर';\n if (hour < 20) return 'शाम';\n return 'रात';\n },\n\n meridiemHour(hour: number, meridiem: string) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') return hour < 4 ? hour : hour + 12;\n if (meridiem === 'सुबह') return hour;\n if (meridiem === 'दोपहर') return hour >= 10 ? hour : hour + 12;\n if (meridiem === 'शाम') return hour + 12;\n return hour;\n },\n\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n});\n\nDayjs.updateLocale('fr', {\n calendar: {\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n sameDay: '[Aujourd’hui à] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('tr', {\n calendar: {\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n sameDay: '[bugün saat] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('ru', {\n calendar: {\n lastDay: '[Вчера, в] LT',\n nextDay: '[Завтра, в] LT',\n sameDay: '[Сегодня, в] LT',\n },\n});\n\nconst en_locale = {\n formats: {},\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n relativeTime: {},\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n};\n\n// Type guards to check DayJs\nconst isDayJs = (dateTimeParser: typeof Dayjs | typeof moment): dateTimeParser is typeof Dayjs =>\n (dateTimeParser as typeof Dayjs).extend !== undefined;\n\ntype Options = {\n DateTimeParser?: typeof Dayjs | typeof moment;\n dayjsLocaleConfigForLanguage?: Partial<ILocale>;\n debug?: boolean;\n disableDateTimeTranslations?: boolean;\n language?: string;\n logger?: (msg?: string) => void;\n translationsForLanguage?: Partial<typeof enTranslations>;\n};\n\ntype I18NextConfig = {\n debug: boolean;\n fallbackLng: false | FallbackLng;\n interpolation: { escapeValue: boolean };\n keySeparator: false | string;\n lng: string;\n nsSeparator: false | string;\n parseMissingKeyHandler: (key: string) => string;\n};\n\n/**\n * Wrapper around [i18next](https://www.i18next.com/) class for Stream related translations.\n * Instance of this class should be provided to Chat component to handle translations.\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. Russian (ru)\n * 4. Turkish (tr)\n * 5. French (fr)\n * 6. Italian (it)\n * 7. Hindi (hi)\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n({ language 'nl' });\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * translationsForLanguage: {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * }\n * });\n *\n * If you would like to register additional languages, use registerTranslation. You can add as many languages as you want:\n *\n * i18n.registerTranslation('zh', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language as well.\n *\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation('mr', {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * ## Datetime translations\n *\n * Stream react chat components uses [dayjs](https://day.js.org/en/) internally by default to format datetime stamp.\n * e.g., in ChannelPreview, MessageContent components.\n * Dayjs has locale support as well - https://day.js.org/docs/en/i18n/i18n\n * Dayjs is a lightweight alternative to Momentjs with the same modern API.\n *\n * Dayjs provides locale config for plenty of languages, you can check the whole list of locale configs at following url\n * https://github.com/iamkun/dayjs/tree/dev/src/locale\n *\n * You can either provide the dayjs locale config while registering\n * language with Streami18n (either via constructor or registerTranslation()) or you can provide your own Dayjs or Moment instance\n * to Streami18n constructor, which will be then used internally (using the language locale) in components.\n *\n * 1. Via language registration\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * dayjsLocaleConfigForLanguage: {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * });\n * ```\n *\n * Similarly, you can add locale config for moment while registering translation via `registerTranslation` function.\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation(\n * 'mr',\n * {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * },\n * {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * );\n *```\n * 2. Provide your own Moment object\n *\n * ```js\n * import 'moment/locale/nl';\n * import 'moment/locale/it';\n * // or if you want to include all locales\n * import 'moment/min/locales';\n *\n * import Moment from moment\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Moment\n * })\n * ```\n *\n * 3. Provide your own Dayjs object\n *\n * ```js\n * import Dayjs from 'dayjs'\n *\n * import 'dayjs/locale/nl';\n * import 'dayjs/locale/it';\n * // or if you want to include all locales\n * import 'dayjs/min/locales';\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Dayjs\n * })\n * ```\n * If you would like to stick with english language for date-times in Stream components, you can set `disableDateTimeTranslations` to true.\n *\n */\nconst defaultStreami18nOptions = {\n DateTimeParser: Dayjs,\n dayjsLocaleConfigForLanguage: null,\n debug: false,\n disableDateTimeTranslations: false,\n language: 'en',\n logger: (msg?: string) => console.warn(msg),\n};\n\nexport class Streami18n {\n i18nInstance = i18n.createInstance();\n Dayjs = null;\n setLanguageCallback: (t: TFunction) => void = () => null;\n initialized = false;\n\n t: TFunction = (key: string) => key;\n tDateTimeParser: TDateTimeParser;\n\n translations: {\n [key: string]: {\n [key: string]: Partial<typeof enTranslations> | DefaultStreamChatGenerics;\n };\n } = {\n en: { [defaultNS]: enTranslations },\n fr: { [defaultNS]: frTranslations },\n he: { [defaultNS]: heTranslations },\n hi: { [defaultNS]: hiTranslations },\n it: { [defaultNS]: itTranslations },\n ja: { [defaultNS]: jaTranslations },\n ko: { [defaultNS]: koTranslations },\n nl: { [defaultNS]: nlTranslations },\n ru: { [defaultNS]: ruTranslations },\n tr: { [defaultNS]: trTranslations },\n };\n\n /**\n * dayjs.defineLanguage('nl') also changes the global locale. We don't want to do that\n * when a user calls the registerTranslation() function. So instead we will store the\n * locale configs given to the registerTranslation() function in `dayjsLocales` object,\n * and register the required locale with moment when setLanguage is called.\n */\n dayjsLocales: { [key: string]: Partial<ILocale> } = {};\n\n /**\n * Initialize properties used in constructor\n */\n logger: (msg?: string) => void;\n currentLanguage: string;\n DateTimeParser: typeof Dayjs | typeof moment;\n isCustomDateTimeParser: boolean;\n i18nextConfig: I18NextConfig;\n\n /**\n * Constructor accepts following options:\n * - language (String) default: 'en'\n * Language code e.g., en, tr\n *\n * - translationsForLanguage (object)\n * Translations object. Please check src/i18n/en.json for example.\n *\n * - disableDateTimeTranslations (boolean) default: false\n * Disable translations for date-times\n *\n * - debug (boolean) default: false\n * Enable debug mode in internal i18n class\n *\n * - logger (function) default: () => {}\n * Logger function to log warnings/errors from this class\n *\n * - dayjsLocaleConfigForLanguage (object) default: 'enConfig'\n * [Config object](https://momentjs.com/docs/#/i18n/changing-locale/) for internal moment object,\n * corresponding to language (param)\n *\n * - DateTimeParser (function) Moment or Dayjs instance/function.\n * Make sure to load all the required locales in this Moment or Dayjs instance that you will be provide to Streami18n\n *\n * @param {*} options\n */\n constructor(options: Options = {}, i18nextConfig: Partial<I18NextConfig> = {}) {\n const finalOptions = {\n ...defaultStreami18nOptions,\n ...options,\n };\n\n // Prepare the i18next configuration.\n this.logger = finalOptions.logger;\n\n this.currentLanguage = finalOptions.language;\n this.DateTimeParser = finalOptions.DateTimeParser;\n\n try {\n /**\n * This is a shallow check to see if the given parser is an instance of Dayjs.\n * For some reason Dayjs.isDayjs(this.DateTimeParser()) doesn't work.\n */\n if (this.DateTimeParser && isDayJs(this.DateTimeParser)) {\n this.DateTimeParser.extend(LocalizedFormat);\n this.DateTimeParser.extend(calendar);\n this.DateTimeParser.extend(localeData);\n this.DateTimeParser.extend(relativeTime);\n }\n } catch (error) {\n throw new Error(\n `Streami18n: Looks like you wanted to provide a Dayjs instance but something went wrong while adding plugins ${JSON.stringify(\n error,\n )}`,\n );\n }\n\n this.isCustomDateTimeParser = !!options.DateTimeParser;\n const translationsForLanguage = finalOptions.translationsForLanguage;\n\n if (translationsForLanguage) {\n this.translations[this.currentLanguage] = {\n [defaultNS]:\n this.translations[this.currentLanguage] &&\n this.translations[this.currentLanguage][defaultNS]\n ? {\n ...this.translations[this.currentLanguage][defaultNS],\n ...translationsForLanguage,\n }\n : translationsForLanguage,\n };\n }\n\n // If translations don't exist for given language, then set it as empty object.\n if (!this.translations[this.currentLanguage]) {\n this.translations[this.currentLanguage] = {\n [defaultNS]: {},\n };\n }\n\n this.i18nextConfig = {\n debug: finalOptions.debug,\n fallbackLng: false,\n interpolation: { escapeValue: false },\n keySeparator: false,\n lng: this.currentLanguage,\n nsSeparator: false,\n\n parseMissingKeyHandler: (key: string) => {\n this.logger(`Streami18n: Missing translation for key: ${key}`);\n\n return key;\n },\n ...i18nextConfig,\n };\n\n this.validateCurrentLanguage();\n\n const dayjsLocaleConfigForLanguage = finalOptions.dayjsLocaleConfigForLanguage;\n\n if (dayjsLocaleConfigForLanguage) {\n this.addOrUpdateLocale(this.currentLanguage, {\n ...dayjsLocaleConfigForLanguage,\n });\n } else if (!this.localeExists(this.currentLanguage)) {\n this.logger(\n `Streami18n: Streami18n(...) - Locale config for ${this.currentLanguage} does not exist in momentjs.` +\n `Please import the locale file using \"import 'moment/locale/${this.currentLanguage}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n this.tDateTimeParser = (timestamp) => {\n if (finalOptions.disableDateTimeTranslations || !this.localeExists(this.currentLanguage)) {\n /**\n * TS needs to know which is being called to accept the chain call\n */\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n }\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n };\n }\n\n /**\n * Initializes the i18next instance with configuration (which enables natural language as default keys)\n */\n async init() {\n this.validateCurrentLanguage();\n\n try {\n this.t = await this.i18nInstance.init({\n ...this.i18nextConfig,\n lng: this.currentLanguage,\n resources: this.translations,\n });\n this.initialized = true;\n } catch (error) {\n this.logger(`Something went wrong with init: ${JSON.stringify(error)}`);\n }\n\n return {\n t: this.t,\n tDateTimeParser: this.tDateTimeParser,\n };\n }\n\n localeExists = (language: string) => {\n if (this.isCustomDateTimeParser) return true;\n\n return Object.keys(Dayjs.Ls).indexOf(language) > -1;\n };\n\n validateCurrentLanguage = () => {\n const availableLanguages = Object.keys(this.translations);\n if (availableLanguages.indexOf(this.currentLanguage) === -1) {\n this.logger(\n `Streami18n: '${this.currentLanguage}' language is not registered.` +\n ` Please make sure to call streami18n.registerTranslation('${this.currentLanguage}', {...}) or ` +\n `use one the built-in supported languages - ${this.getAvailableLanguages()}`,\n );\n\n this.currentLanguage = defaultLng;\n }\n };\n\n /** Returns an instance of i18next used within this class instance */\n geti18Instance = () => this.i18nInstance;\n\n /** Returns list of available languages. */\n getAvailableLanguages = () => Object.keys(this.translations);\n\n /** Returns all the translation dictionary for all inbuilt-languages */\n getTranslations = () => this.translations;\n\n /**\n * Returns current version translator function.\n */\n async getTranslators() {\n if (!this.initialized) {\n if (this.dayjsLocales[this.currentLanguage]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n return await this.init();\n } else {\n return {\n t: this.t,\n tDateTimeParser: this.tDateTimeParser,\n };\n }\n }\n\n /**\n * Register translation\n */\n registerTranslation(\n language: string,\n translation: Partial<typeof enTranslations> | DefaultStreamChatGenerics,\n customDayjsLocale?: Partial<ILocale>,\n ) {\n if (!translation) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) called without translation`,\n );\n return;\n }\n\n if (!this.translations[language]) {\n this.translations[language] = { [defaultNS]: translation };\n } else {\n this.translations[language][defaultNS] = translation;\n }\n\n if (customDayjsLocale) {\n this.dayjsLocales[language] = { ...customDayjsLocale };\n } else if (!this.localeExists(language)) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) - ` +\n `Locale config for ${language} does not exist in Dayjs.` +\n `Please import the locale file using \"import 'dayjs/locale/${language}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n if (this.initialized) {\n this.i18nInstance.addResources(language, defaultNS, translation);\n }\n }\n\n addOrUpdateLocale(key: string, config: Partial<ILocale>) {\n if (this.localeExists(key)) {\n Dayjs.updateLocale(key, { ...config });\n } else {\n // Merging the custom locale config with en config, so missing keys can default to english.\n Dayjs.locale({ name: key, ...en_locale, ...config }, undefined, true);\n }\n }\n\n /**\n * Changes the language.\n */\n async setLanguage(language: string) {\n this.currentLanguage = language;\n\n if (!this.initialized) return;\n\n try {\n const t = await this.i18nInstance.changeLanguage(language);\n if (this.dayjsLocales[language]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n this.setLanguageCallback(t);\n\n return t;\n } catch (error) {\n this.logger(`Failed to set language: ${JSON.stringify(error)}`);\n return this.t;\n }\n }\n\n registerSetLanguageCallback(callback: (t: TFunction) => void) {\n this.setLanguageCallback = callback;\n }\n}\n"]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"1 Reply": "תגובה אחת",
|
|
3
|
+
"1 Thread Reply": "תגובה אחת לשרשור",
|
|
4
|
+
"Allow access to your Gallery": "אפשר גישה לגלריה שלך",
|
|
5
|
+
"Also send to channel": "שלח/י הודעה לשיחה",
|
|
6
|
+
"Are you sure you want to permanently delete this message?": "האם את/ה בטוח/ה שאת/ה רוצה למחוק את ההודעה הזו לצמיתות?",
|
|
7
|
+
"Block User": "חסום משתמש",
|
|
8
|
+
"Cancel": "ביטול",
|
|
9
|
+
"Cannot Flag Message": "סימון הודעה לא אפשרי",
|
|
10
|
+
"Copy Message": "העתק/י הודעה",
|
|
11
|
+
"Delete": "מחק",
|
|
12
|
+
"Delete Message": "מחק/י הודעה",
|
|
13
|
+
"Do you want to send a copy of this message to a moderator for further investigation?": "האם את/ה רוצה לשלוח עותק של הודעה זו למנחה להמשך חקירה?",
|
|
14
|
+
"Edit Message": "ערוך הודעה",
|
|
15
|
+
"Editing Message": "הודעה בעריכה",
|
|
16
|
+
"Emoji matching": "התאמת אמוג'י",
|
|
17
|
+
"Empty message...": "הודעה ריקה...",
|
|
18
|
+
"Error loading": "שגיאה ארעה בעת הטעינה",
|
|
19
|
+
"Error loading channel list...": "שגיאה ארעה בטעינת השיחות...",
|
|
20
|
+
"Error loading messages for this channel...": "שגיאה ארעה בטעינת הודעות עבור שיחה זאת...",
|
|
21
|
+
"Error while loading, please reload/refresh": "שגיאה ארעה בזמן הטעינה, אנא טען מחדש/רענן",
|
|
22
|
+
"File type not supported": "סוג הקובץ אינו נתמך",
|
|
23
|
+
"Flag": "סמן",
|
|
24
|
+
"Flag Message": "סמן הודעה",
|
|
25
|
+
"Flag action failed either due to a network issue or the message is already flagged": "פעולת הסימון נכשלה בגלל בעיית רשת או שההודעה כבר סומנה.",
|
|
26
|
+
"Instant Commands": "פעולות מיידיות",
|
|
27
|
+
"Links are disabled": "הקישורים מבוטלים",
|
|
28
|
+
"Loading channels...": "השיחות בטעינה...",
|
|
29
|
+
"Loading messages...": "ההודעות בטעינה..",
|
|
30
|
+
"Loading...": "טוען...",
|
|
31
|
+
"Message Reactions": "תגובות להודעה",
|
|
32
|
+
"Message deleted": "ההודעה נמחקה",
|
|
33
|
+
"Message flagged": "ההודעה סומנה",
|
|
34
|
+
"Mute User": "השתק/י משתמש",
|
|
35
|
+
"Not supported": "לא נתמך",
|
|
36
|
+
"Nothing yet...": "אינפורמציה תתקבל בהמשך...",
|
|
37
|
+
"Ok": "אוקיי",
|
|
38
|
+
"Only visible to you": "גלוי רק לך",
|
|
39
|
+
"Photo": "תמונה",
|
|
40
|
+
"Photos": "תמונות",
|
|
41
|
+
"Pin to Conversation": "הצמד/י לשיחה",
|
|
42
|
+
"Please enable access to your photos and videos so you can share them.": "אפשר/י גישה לתמונות ולסרטונים שלך כדי שתוכל/י לשתף אותם.",
|
|
43
|
+
"Please select a channel first": "אנא בחר/י שיחה תחילה",
|
|
44
|
+
"Reconnecting...": "מתחבר מחדש...",
|
|
45
|
+
"Reply": "השב/י",
|
|
46
|
+
"Reply to Message": "השב/י להודעה",
|
|
47
|
+
"Resend": "שלח/י שוב",
|
|
48
|
+
"Search GIFs": "חפש/י GIFs",
|
|
49
|
+
"Send a message": "שלח/י הודעה",
|
|
50
|
+
"Sending links is not allowed in this conversation": "שליחת קישורים אינה מותרת בשיחה זו",
|
|
51
|
+
"Slow mode ON": "מצב איטי מופעל",
|
|
52
|
+
"The message has been reported to a moderator.": "ההודעה דווחה למנהל",
|
|
53
|
+
"Thread Reply": "הגב/י בשרשור",
|
|
54
|
+
"Unblock User": "בטל/י חסימת משתמש",
|
|
55
|
+
"Unknown User": "משתמש לא ידוע",
|
|
56
|
+
"Unmute User": "בטל/י השתקת משתמש",
|
|
57
|
+
"Unpin from Conversation": "בטל/י הצמדה לשיחה",
|
|
58
|
+
"Unread Messages": "הודעות שטרם נקרו",
|
|
59
|
+
"You": "את/ה",
|
|
60
|
+
"You can't send messages in this channel": "את/ב לא יכול/ה לשלוח הודעות בשיחה זו",
|
|
61
|
+
"{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} ו-{{ nonSelfUserLength }} משתמש/ים אחר/ים מקלידים",
|
|
62
|
+
"{{ index }} of {{ photoLength }}": "{{ index }} מתוך {{ photoLength }}",
|
|
63
|
+
"{{ replyCount }} Replies": "{{ replyCount }} תגובות",
|
|
64
|
+
"{{ replyCount }} Thread Replies": "{{ replyCount }} תגובות שרשור",
|
|
65
|
+
"{{ user }} is typing": "{{ user }} מקליד/ה",
|
|
66
|
+
"🏙 Attachment...": "🏙 קובץ מצורף..."
|
|
67
|
+
}
|
package/lib/module/index.js
CHANGED
|
@@ -13,6 +13,7 @@ var _exportNames = {
|
|
|
13
13
|
nlTranslations: true,
|
|
14
14
|
ruTranslations: true,
|
|
15
15
|
trTranslations: true,
|
|
16
|
+
heTranslations: true,
|
|
16
17
|
version: true
|
|
17
18
|
};
|
|
18
19
|
Object.defineProperty(exports, "NetInfo", {
|
|
@@ -33,6 +34,12 @@ Object.defineProperty(exports, "frTranslations", {
|
|
|
33
34
|
return _fr["default"];
|
|
34
35
|
}
|
|
35
36
|
});
|
|
37
|
+
Object.defineProperty(exports, "heTranslations", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function get() {
|
|
40
|
+
return _he["default"];
|
|
41
|
+
}
|
|
42
|
+
});
|
|
36
43
|
Object.defineProperty(exports, "hiTranslations", {
|
|
37
44
|
enumerable: true,
|
|
38
45
|
get: function get() {
|
|
@@ -204,5 +211,7 @@ var _ru = _interopRequireDefault(require("./i18n/ru.json"));
|
|
|
204
211
|
|
|
205
212
|
var _tr = _interopRequireDefault(require("./i18n/tr.json"));
|
|
206
213
|
|
|
214
|
+
var _he = _interopRequireDefault(require("./i18n/he.json"));
|
|
215
|
+
|
|
207
216
|
var _version = require("./version.json");
|
|
208
217
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA","sourcesContent":["export * from './components';\nexport * from './hooks';\nexport { registerNativeHandlers, NetInfo } from './native';\nexport * from './contexts';\nexport * from './emoji-data/compiled';\n\nexport * from './icons';\n\nexport * from './types/types';\n\nexport * from './utils/Streami18n';\nexport * from './utils/utils';\n\nexport { default as enTranslations } from './i18n/en.json';\nexport { default as frTranslations } from './i18n/fr.json';\nexport { default as hiTranslations } from './i18n/hi.json';\nexport { default as itTranslations } from './i18n/it.json';\nexport { default as nlTranslations } from './i18n/nl.json';\nexport { default as ruTranslations } from './i18n/ru.json';\nexport { default as trTranslations } from './i18n/tr.json';\nexport { default as heTranslations } from './i18n/he.json';\n\nexport { version } from './version.json';\n"]}
|
|
@@ -35,6 +35,8 @@ var _en2 = _interopRequireDefault(require("../i18n/en.json"));
|
|
|
35
35
|
|
|
36
36
|
var _fr2 = _interopRequireDefault(require("../i18n/fr.json"));
|
|
37
37
|
|
|
38
|
+
var _he2 = _interopRequireDefault(require("../i18n/he.json"));
|
|
39
|
+
|
|
38
40
|
var _hi2 = _interopRequireDefault(require("../i18n/hi.json"));
|
|
39
41
|
|
|
40
42
|
var _it2 = _interopRequireDefault(require("../i18n/it.json"));
|
|
@@ -65,6 +67,8 @@ require("dayjs/locale/ru");
|
|
|
65
67
|
|
|
66
68
|
require("dayjs/locale/tr");
|
|
67
69
|
|
|
70
|
+
require("dayjs/locale/he");
|
|
71
|
+
|
|
68
72
|
require("dayjs/locale/en");
|
|
69
73
|
|
|
70
74
|
var defaultNS = 'translation';
|
|
@@ -210,6 +214,7 @@ var Streami18n = function () {
|
|
|
210
214
|
this.translations = {
|
|
211
215
|
en: (0, _defineProperty2["default"])({}, defaultNS, _en2["default"]),
|
|
212
216
|
fr: (0, _defineProperty2["default"])({}, defaultNS, _fr2["default"]),
|
|
217
|
+
he: (0, _defineProperty2["default"])({}, defaultNS, _he2["default"]),
|
|
213
218
|
hi: (0, _defineProperty2["default"])({}, defaultNS, _hi2["default"]),
|
|
214
219
|
it: (0, _defineProperty2["default"])({}, defaultNS, _it2["default"]),
|
|
215
220
|
ja: (0, _defineProperty2["default"])({}, defaultNS, _ja2["default"]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Streami18n.ts"],"names":["defaultNS","defaultLng","Dayjs","extend","updateLocale","format","L","LL","LLL","LLLL","LT","LTS","calendar","lastDay","lastWeek","nextDay","nextWeek","sameDay","sameElse","meridiem","hour","meridiemHour","meridiemParse","en_locale","formats","months","relativeTime","weekdays","isDayJs","dateTimeParser","undefined","defaultStreami18nOptions","DateTimeParser","dayjsLocaleConfigForLanguage","debug","disableDateTimeTranslations","language","logger","msg","console","warn","Streami18n","options","i18nextConfig","i18nInstance","i18n","createInstance","setLanguageCallback","initialized","t","key","translations","en","enTranslations","fr","frTranslations","hi","hiTranslations","it","itTranslations","ja","jaTranslations","ko","koTranslations","nl","nlTranslations","ru","ruTranslations","tr","trTranslations","dayjsLocales","localeExists","isCustomDateTimeParser","Object","keys","Ls","indexOf","validateCurrentLanguage","availableLanguages","currentLanguage","getAvailableLanguages","geti18Instance","getTranslations","finalOptions","LocalizedFormat","localeData","error","Error","JSON","stringify","translationsForLanguage","fallbackLng","interpolation","escapeValue","keySeparator","lng","nsSeparator","parseMissingKeyHandler","addOrUpdateLocale","tDateTimeParser","timestamp","locale","init","resources","translation","customDayjsLocale","addResources","config","name","changeLanguage","callback"],"mappings":"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","sourcesContent":["import Dayjs from 'dayjs';\nimport calendar from 'dayjs/plugin/calendar';\nimport localeData from 'dayjs/plugin/localeData';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport i18n, { FallbackLng, TFunction } from 'i18next';\n\nimport type moment from 'moment';\n\nimport type { TDateTimeParser } from '../contexts/translationContext/TranslationContext';\nimport enTranslations from '../i18n/en.json';\nimport frTranslations from '../i18n/fr.json';\nimport hiTranslations from '../i18n/hi.json';\nimport itTranslations from '../i18n/it.json';\nimport jaTranslations from '../i18n/ja.json';\nimport koTranslations from '../i18n/ko.json';\nimport nlTranslations from '../i18n/nl.json';\nimport ruTranslations from '../i18n/ru.json';\nimport trTranslations from '../i18n/tr.json';\n\nconst defaultNS = 'translation';\nconst defaultLng = 'en';\n\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/hi';\nimport 'dayjs/locale/it';\nimport 'dayjs/locale/ja';\nimport 'dayjs/locale/ko';\nimport 'dayjs/locale/nl';\nimport 'dayjs/locale/ru';\nimport 'dayjs/locale/tr';\n\n/**\n * These locale imports also set these locales globally.\n * So as a last step we import the english locale to make\n * sure we don't mess up languages in other places in the app.\n */\nimport 'dayjs/locale/en';\n\nimport type { DefaultStreamChatGenerics } from '../types/types';\n\nDayjs.extend(updateLocale);\n\nDayjs.updateLocale('en', {\n format: {\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n LT: 'hh:mmA',\n LTS: 'HH:mm:ss',\n },\n});\n\nDayjs.updateLocale('nl', {\n calendar: {\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n sameDay: '[vandaag om] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('it', {\n calendar: {\n lastDay: '[Ieri alle] LT',\n lastWeek: '[lo scorso] dddd [alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n sameDay: '[Oggi alle] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('hi', {\n calendar: {\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n sameDay: '[आज] LT',\n sameElse: 'L',\n },\n\n /**\n * Hindi notation for meridiems are quite fuzzy in practice. While there exists\n * a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n */\n meridiem(hour: number) {\n if (hour < 4) return 'रात';\n if (hour < 10) return 'सुबह';\n if (hour < 17) return 'दोपहर';\n if (hour < 20) return 'शाम';\n return 'रात';\n },\n\n meridiemHour(hour: number, meridiem: string) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') return hour < 4 ? hour : hour + 12;\n if (meridiem === 'सुबह') return hour;\n if (meridiem === 'दोपहर') return hour >= 10 ? hour : hour + 12;\n if (meridiem === 'शाम') return hour + 12;\n return hour;\n },\n\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n});\n\nDayjs.updateLocale('fr', {\n calendar: {\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n sameDay: '[Aujourd’hui à] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('tr', {\n calendar: {\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n sameDay: '[bugün saat] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('ru', {\n calendar: {\n lastDay: '[Вчера, в] LT',\n nextDay: '[Завтра, в] LT',\n sameDay: '[Сегодня, в] LT',\n },\n});\n\nconst en_locale = {\n formats: {},\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n relativeTime: {},\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n};\n\n// Type guards to check DayJs\nconst isDayJs = (dateTimeParser: typeof Dayjs | typeof moment): dateTimeParser is typeof Dayjs =>\n (dateTimeParser as typeof Dayjs).extend !== undefined;\n\ntype Options = {\n DateTimeParser?: typeof Dayjs | typeof moment;\n dayjsLocaleConfigForLanguage?: Partial<ILocale>;\n debug?: boolean;\n disableDateTimeTranslations?: boolean;\n language?: string;\n logger?: (msg?: string) => void;\n translationsForLanguage?: Partial<typeof enTranslations>;\n};\n\ntype I18NextConfig = {\n debug: boolean;\n fallbackLng: false | FallbackLng;\n interpolation: { escapeValue: boolean };\n keySeparator: false | string;\n lng: string;\n nsSeparator: false | string;\n parseMissingKeyHandler: (key: string) => string;\n};\n\n/**\n * Wrapper around [i18next](https://www.i18next.com/) class for Stream related translations.\n * Instance of this class should be provided to Chat component to handle translations.\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. Russian (ru)\n * 4. Turkish (tr)\n * 5. French (fr)\n * 6. Italian (it)\n * 7. Hindi (hi)\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n({ language 'nl' });\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * translationsForLanguage: {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * }\n * });\n *\n * If you would like to register additional languages, use registerTranslation. You can add as many languages as you want:\n *\n * i18n.registerTranslation('zh', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language as well.\n *\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation('mr', {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * ## Datetime translations\n *\n * Stream react chat components uses [dayjs](https://day.js.org/en/) internally by default to format datetime stamp.\n * e.g., in ChannelPreview, MessageContent components.\n * Dayjs has locale support as well - https://day.js.org/docs/en/i18n/i18n\n * Dayjs is a lightweight alternative to Momentjs with the same modern API.\n *\n * Dayjs provides locale config for plenty of languages, you can check the whole list of locale configs at following url\n * https://github.com/iamkun/dayjs/tree/dev/src/locale\n *\n * You can either provide the dayjs locale config while registering\n * language with Streami18n (either via constructor or registerTranslation()) or you can provide your own Dayjs or Moment instance\n * to Streami18n constructor, which will be then used internally (using the language locale) in components.\n *\n * 1. Via language registration\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * dayjsLocaleConfigForLanguage: {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * });\n * ```\n *\n * Similarly, you can add locale config for moment while registering translation via `registerTranslation` function.\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation(\n * 'mr',\n * {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * },\n * {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * );\n *```\n * 2. Provide your own Moment object\n *\n * ```js\n * import 'moment/locale/nl';\n * import 'moment/locale/it';\n * // or if you want to include all locales\n * import 'moment/min/locales';\n *\n * import Moment from moment\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Moment\n * })\n * ```\n *\n * 3. Provide your own Dayjs object\n *\n * ```js\n * import Dayjs from 'dayjs'\n *\n * import 'dayjs/locale/nl';\n * import 'dayjs/locale/it';\n * // or if you want to include all locales\n * import 'dayjs/min/locales';\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Dayjs\n * })\n * ```\n * If you would like to stick with english language for date-times in Stream components, you can set `disableDateTimeTranslations` to true.\n *\n */\nconst defaultStreami18nOptions = {\n DateTimeParser: Dayjs,\n dayjsLocaleConfigForLanguage: null,\n debug: false,\n disableDateTimeTranslations: false,\n language: 'en',\n logger: (msg?: string) => console.warn(msg),\n};\n\nexport class Streami18n {\n i18nInstance = i18n.createInstance();\n Dayjs = null;\n setLanguageCallback: (t: TFunction) => void = () => null;\n initialized = false;\n\n t: TFunction = (key: string) => key;\n tDateTimeParser: TDateTimeParser;\n\n translations: {\n [key: string]: {\n [key: string]: Partial<typeof enTranslations> | DefaultStreamChatGenerics;\n };\n } = {\n en: { [defaultNS]: enTranslations },\n fr: { [defaultNS]: frTranslations },\n hi: { [defaultNS]: hiTranslations },\n it: { [defaultNS]: itTranslations },\n ja: { [defaultNS]: jaTranslations },\n ko: { [defaultNS]: koTranslations },\n nl: { [defaultNS]: nlTranslations },\n ru: { [defaultNS]: ruTranslations },\n tr: { [defaultNS]: trTranslations },\n };\n\n /**\n * dayjs.defineLanguage('nl') also changes the global locale. We don't want to do that\n * when a user calls the registerTranslation() function. So instead we will store the\n * locale configs given to the registerTranslation() function in `dayjsLocales` object,\n * and register the required locale with moment when setLanguage is called.\n */\n dayjsLocales: { [key: string]: Partial<ILocale> } = {};\n\n /**\n * Initialize properties used in constructor\n */\n logger: (msg?: string) => void;\n currentLanguage: string;\n DateTimeParser: typeof Dayjs | typeof moment;\n isCustomDateTimeParser: boolean;\n i18nextConfig: I18NextConfig;\n\n /**\n * Constructor accepts following options:\n * - language (String) default: 'en'\n * Language code e.g., en, tr\n *\n * - translationsForLanguage (object)\n * Translations object. Please check src/i18n/en.json for example.\n *\n * - disableDateTimeTranslations (boolean) default: false\n * Disable translations for date-times\n *\n * - debug (boolean) default: false\n * Enable debug mode in internal i18n class\n *\n * - logger (function) default: () => {}\n * Logger function to log warnings/errors from this class\n *\n * - dayjsLocaleConfigForLanguage (object) default: 'enConfig'\n * [Config object](https://momentjs.com/docs/#/i18n/changing-locale/) for internal moment object,\n * corresponding to language (param)\n *\n * - DateTimeParser (function) Moment or Dayjs instance/function.\n * Make sure to load all the required locales in this Moment or Dayjs instance that you will be provide to Streami18n\n *\n * @param {*} options\n */\n constructor(options: Options = {}, i18nextConfig: Partial<I18NextConfig> = {}) {\n const finalOptions = {\n ...defaultStreami18nOptions,\n ...options,\n };\n\n // Prepare the i18next configuration.\n this.logger = finalOptions.logger;\n\n this.currentLanguage = finalOptions.language;\n this.DateTimeParser = finalOptions.DateTimeParser;\n\n try {\n /**\n * This is a shallow check to see if the given parser is an instance of Dayjs.\n * For some reason Dayjs.isDayjs(this.DateTimeParser()) doesn't work.\n */\n if (this.DateTimeParser && isDayJs(this.DateTimeParser)) {\n this.DateTimeParser.extend(LocalizedFormat);\n this.DateTimeParser.extend(calendar);\n this.DateTimeParser.extend(localeData);\n this.DateTimeParser.extend(relativeTime);\n }\n } catch (error) {\n throw new Error(\n `Streami18n: Looks like you wanted to provide a Dayjs instance but something went wrong while adding plugins ${JSON.stringify(\n error,\n )}`,\n );\n }\n\n this.isCustomDateTimeParser = !!options.DateTimeParser;\n const translationsForLanguage = finalOptions.translationsForLanguage;\n\n if (translationsForLanguage) {\n this.translations[this.currentLanguage] = {\n [defaultNS]:\n this.translations[this.currentLanguage] &&\n this.translations[this.currentLanguage][defaultNS]\n ? {\n ...this.translations[this.currentLanguage][defaultNS],\n ...translationsForLanguage,\n }\n : translationsForLanguage,\n };\n }\n\n // If translations don't exist for given language, then set it as empty object.\n if (!this.translations[this.currentLanguage]) {\n this.translations[this.currentLanguage] = {\n [defaultNS]: {},\n };\n }\n\n this.i18nextConfig = {\n debug: finalOptions.debug,\n fallbackLng: false,\n interpolation: { escapeValue: false },\n keySeparator: false,\n lng: this.currentLanguage,\n nsSeparator: false,\n\n parseMissingKeyHandler: (key: string) => {\n this.logger(`Streami18n: Missing translation for key: ${key}`);\n\n return key;\n },\n ...i18nextConfig,\n };\n\n this.validateCurrentLanguage();\n\n const dayjsLocaleConfigForLanguage = finalOptions.dayjsLocaleConfigForLanguage;\n\n if (dayjsLocaleConfigForLanguage) {\n this.addOrUpdateLocale(this.currentLanguage, {\n ...dayjsLocaleConfigForLanguage,\n });\n } else if (!this.localeExists(this.currentLanguage)) {\n this.logger(\n `Streami18n: Streami18n(...) - Locale config for ${this.currentLanguage} does not exist in momentjs.` +\n `Please import the locale file using \"import 'moment/locale/${this.currentLanguage}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n this.tDateTimeParser = (timestamp) => {\n if (finalOptions.disableDateTimeTranslations || !this.localeExists(this.currentLanguage)) {\n /**\n * TS needs to know which is being called to accept the chain call\n */\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n }\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n };\n }\n\n /**\n * Initializes the i18next instance with configuration (which enables natural language as default keys)\n */\n async init() {\n this.validateCurrentLanguage();\n\n try {\n this.t = await this.i18nInstance.init({\n ...this.i18nextConfig,\n lng: this.currentLanguage,\n resources: this.translations,\n });\n this.initialized = true;\n } catch (error) {\n this.logger(`Something went wrong with init: ${JSON.stringify(error)}`);\n }\n\n return {\n t: this.t,\n tDateTimeParser: this.tDateTimeParser,\n };\n }\n\n localeExists = (language: string) => {\n if (this.isCustomDateTimeParser) return true;\n\n return Object.keys(Dayjs.Ls).indexOf(language) > -1;\n };\n\n validateCurrentLanguage = () => {\n const availableLanguages = Object.keys(this.translations);\n if (availableLanguages.indexOf(this.currentLanguage) === -1) {\n this.logger(\n `Streami18n: '${this.currentLanguage}' language is not registered.` +\n ` Please make sure to call streami18n.registerTranslation('${this.currentLanguage}', {...}) or ` +\n `use one the built-in supported languages - ${this.getAvailableLanguages()}`,\n );\n\n this.currentLanguage = defaultLng;\n }\n };\n\n /** Returns an instance of i18next used within this class instance */\n geti18Instance = () => this.i18nInstance;\n\n /** Returns list of available languages. */\n getAvailableLanguages = () => Object.keys(this.translations);\n\n /** Returns all the translation dictionary for all inbuilt-languages */\n getTranslations = () => this.translations;\n\n /**\n * Returns current version translator function.\n */\n async getTranslators() {\n if (!this.initialized) {\n if (this.dayjsLocales[this.currentLanguage]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n return await this.init();\n } else {\n return {\n t: this.t,\n tDateTimeParser: this.tDateTimeParser,\n };\n }\n }\n\n /**\n * Register translation\n */\n registerTranslation(\n language: string,\n translation: Partial<typeof enTranslations> | DefaultStreamChatGenerics,\n customDayjsLocale?: Partial<ILocale>,\n ) {\n if (!translation) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) called without translation`,\n );\n return;\n }\n\n if (!this.translations[language]) {\n this.translations[language] = { [defaultNS]: translation };\n } else {\n this.translations[language][defaultNS] = translation;\n }\n\n if (customDayjsLocale) {\n this.dayjsLocales[language] = { ...customDayjsLocale };\n } else if (!this.localeExists(language)) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) - ` +\n `Locale config for ${language} does not exist in Dayjs.` +\n `Please import the locale file using \"import 'dayjs/locale/${language}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n if (this.initialized) {\n this.i18nInstance.addResources(language, defaultNS, translation);\n }\n }\n\n addOrUpdateLocale(key: string, config: Partial<ILocale>) {\n if (this.localeExists(key)) {\n Dayjs.updateLocale(key, { ...config });\n } else {\n // Merging the custom locale config with en config, so missing keys can default to english.\n Dayjs.locale({ name: key, ...en_locale, ...config }, undefined, true);\n }\n }\n\n /**\n * Changes the language.\n */\n async setLanguage(language: string) {\n this.currentLanguage = language;\n\n if (!this.initialized) return;\n\n try {\n const t = await this.i18nInstance.changeLanguage(language);\n if (this.dayjsLocales[language]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n this.setLanguageCallback(t);\n\n return t;\n } catch (error) {\n this.logger(`Failed to set language: ${JSON.stringify(error)}`);\n return this.t;\n }\n }\n\n registerSetLanguageCallback(callback: (t: TFunction) => void) {\n this.setLanguageCallback = callback;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Streami18n.ts"],"names":["defaultNS","defaultLng","Dayjs","extend","updateLocale","format","L","LL","LLL","LLLL","LT","LTS","calendar","lastDay","lastWeek","nextDay","nextWeek","sameDay","sameElse","meridiem","hour","meridiemHour","meridiemParse","en_locale","formats","months","relativeTime","weekdays","isDayJs","dateTimeParser","undefined","defaultStreami18nOptions","DateTimeParser","dayjsLocaleConfigForLanguage","debug","disableDateTimeTranslations","language","logger","msg","console","warn","Streami18n","options","i18nextConfig","i18nInstance","i18n","createInstance","setLanguageCallback","initialized","t","key","translations","en","enTranslations","fr","frTranslations","he","heTranslations","hi","hiTranslations","it","itTranslations","ja","jaTranslations","ko","koTranslations","nl","nlTranslations","ru","ruTranslations","tr","trTranslations","dayjsLocales","localeExists","isCustomDateTimeParser","Object","keys","Ls","indexOf","validateCurrentLanguage","availableLanguages","currentLanguage","getAvailableLanguages","geti18Instance","getTranslations","finalOptions","LocalizedFormat","localeData","error","Error","JSON","stringify","translationsForLanguage","fallbackLng","interpolation","escapeValue","keySeparator","lng","nsSeparator","parseMissingKeyHandler","addOrUpdateLocale","tDateTimeParser","timestamp","locale","init","resources","translation","customDayjsLocale","addResources","config","name","changeLanguage","callback"],"mappings":"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","sourcesContent":["import Dayjs from 'dayjs';\nimport calendar from 'dayjs/plugin/calendar';\nimport localeData from 'dayjs/plugin/localeData';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport i18n, { FallbackLng, TFunction } from 'i18next';\n\nimport type moment from 'moment';\n\nimport type { TDateTimeParser } from '../contexts/translationContext/TranslationContext';\nimport enTranslations from '../i18n/en.json';\nimport frTranslations from '../i18n/fr.json';\nimport heTranslations from '../i18n/he.json';\nimport hiTranslations from '../i18n/hi.json';\nimport itTranslations from '../i18n/it.json';\nimport jaTranslations from '../i18n/ja.json';\nimport koTranslations from '../i18n/ko.json';\nimport nlTranslations from '../i18n/nl.json';\nimport ruTranslations from '../i18n/ru.json';\nimport trTranslations from '../i18n/tr.json';\n\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/hi';\nimport 'dayjs/locale/it';\nimport 'dayjs/locale/ja';\nimport 'dayjs/locale/ko';\nimport 'dayjs/locale/nl';\nimport 'dayjs/locale/ru';\nimport 'dayjs/locale/tr';\nimport 'dayjs/locale/he';\n\n/**\n * These locale imports also set these locales globally.\n * So as a last step we import the english locale to make\n * sure we don't mess up languages in other places in the app.\n */\nimport 'dayjs/locale/en';\n\nimport type { DefaultStreamChatGenerics } from '../types/types';\n\nconst defaultNS = 'translation';\nconst defaultLng = 'en';\n\nDayjs.extend(updateLocale);\n\nDayjs.updateLocale('en', {\n format: {\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n LT: 'hh:mmA',\n LTS: 'HH:mm:ss',\n },\n});\n\nDayjs.updateLocale('nl', {\n calendar: {\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n sameDay: '[vandaag om] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('it', {\n calendar: {\n lastDay: '[Ieri alle] LT',\n lastWeek: '[lo scorso] dddd [alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n sameDay: '[Oggi alle] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('hi', {\n calendar: {\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n sameDay: '[आज] LT',\n sameElse: 'L',\n },\n\n /**\n * Hindi notation for meridiems are quite fuzzy in practice. While there exists\n * a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n */\n meridiem(hour: number) {\n if (hour < 4) return 'रात';\n if (hour < 10) return 'सुबह';\n if (hour < 17) return 'दोपहर';\n if (hour < 20) return 'शाम';\n return 'रात';\n },\n\n meridiemHour(hour: number, meridiem: string) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') return hour < 4 ? hour : hour + 12;\n if (meridiem === 'सुबह') return hour;\n if (meridiem === 'दोपहर') return hour >= 10 ? hour : hour + 12;\n if (meridiem === 'शाम') return hour + 12;\n return hour;\n },\n\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n});\n\nDayjs.updateLocale('fr', {\n calendar: {\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n sameDay: '[Aujourd’hui à] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('tr', {\n calendar: {\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n sameDay: '[bugün saat] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('ru', {\n calendar: {\n lastDay: '[Вчера, в] LT',\n nextDay: '[Завтра, в] LT',\n sameDay: '[Сегодня, в] LT',\n },\n});\n\nconst en_locale = {\n formats: {},\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n relativeTime: {},\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n};\n\n// Type guards to check DayJs\nconst isDayJs = (dateTimeParser: typeof Dayjs | typeof moment): dateTimeParser is typeof Dayjs =>\n (dateTimeParser as typeof Dayjs).extend !== undefined;\n\ntype Options = {\n DateTimeParser?: typeof Dayjs | typeof moment;\n dayjsLocaleConfigForLanguage?: Partial<ILocale>;\n debug?: boolean;\n disableDateTimeTranslations?: boolean;\n language?: string;\n logger?: (msg?: string) => void;\n translationsForLanguage?: Partial<typeof enTranslations>;\n};\n\ntype I18NextConfig = {\n debug: boolean;\n fallbackLng: false | FallbackLng;\n interpolation: { escapeValue: boolean };\n keySeparator: false | string;\n lng: string;\n nsSeparator: false | string;\n parseMissingKeyHandler: (key: string) => string;\n};\n\n/**\n * Wrapper around [i18next](https://www.i18next.com/) class for Stream related translations.\n * Instance of this class should be provided to Chat component to handle translations.\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. Russian (ru)\n * 4. Turkish (tr)\n * 5. French (fr)\n * 6. Italian (it)\n * 7. Hindi (hi)\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n({ language 'nl' });\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * translationsForLanguage: {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * }\n * });\n *\n * If you would like to register additional languages, use registerTranslation. You can add as many languages as you want:\n *\n * i18n.registerTranslation('zh', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language as well.\n *\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation('mr', {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * ## Datetime translations\n *\n * Stream react chat components uses [dayjs](https://day.js.org/en/) internally by default to format datetime stamp.\n * e.g., in ChannelPreview, MessageContent components.\n * Dayjs has locale support as well - https://day.js.org/docs/en/i18n/i18n\n * Dayjs is a lightweight alternative to Momentjs with the same modern API.\n *\n * Dayjs provides locale config for plenty of languages, you can check the whole list of locale configs at following url\n * https://github.com/iamkun/dayjs/tree/dev/src/locale\n *\n * You can either provide the dayjs locale config while registering\n * language with Streami18n (either via constructor or registerTranslation()) or you can provide your own Dayjs or Moment instance\n * to Streami18n constructor, which will be then used internally (using the language locale) in components.\n *\n * 1. Via language registration\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * dayjsLocaleConfigForLanguage: {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * });\n * ```\n *\n * Similarly, you can add locale config for moment while registering translation via `registerTranslation` function.\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation(\n * 'mr',\n * {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * },\n * {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * );\n *```\n * 2. Provide your own Moment object\n *\n * ```js\n * import 'moment/locale/nl';\n * import 'moment/locale/it';\n * // or if you want to include all locales\n * import 'moment/min/locales';\n *\n * import Moment from moment\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Moment\n * })\n * ```\n *\n * 3. Provide your own Dayjs object\n *\n * ```js\n * import Dayjs from 'dayjs'\n *\n * import 'dayjs/locale/nl';\n * import 'dayjs/locale/it';\n * // or if you want to include all locales\n * import 'dayjs/min/locales';\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Dayjs\n * })\n * ```\n * If you would like to stick with english language for date-times in Stream components, you can set `disableDateTimeTranslations` to true.\n *\n */\nconst defaultStreami18nOptions = {\n DateTimeParser: Dayjs,\n dayjsLocaleConfigForLanguage: null,\n debug: false,\n disableDateTimeTranslations: false,\n language: 'en',\n logger: (msg?: string) => console.warn(msg),\n};\n\nexport class Streami18n {\n i18nInstance = i18n.createInstance();\n Dayjs = null;\n setLanguageCallback: (t: TFunction) => void = () => null;\n initialized = false;\n\n t: TFunction = (key: string) => key;\n tDateTimeParser: TDateTimeParser;\n\n translations: {\n [key: string]: {\n [key: string]: Partial<typeof enTranslations> | DefaultStreamChatGenerics;\n };\n } = {\n en: { [defaultNS]: enTranslations },\n fr: { [defaultNS]: frTranslations },\n he: { [defaultNS]: heTranslations },\n hi: { [defaultNS]: hiTranslations },\n it: { [defaultNS]: itTranslations },\n ja: { [defaultNS]: jaTranslations },\n ko: { [defaultNS]: koTranslations },\n nl: { [defaultNS]: nlTranslations },\n ru: { [defaultNS]: ruTranslations },\n tr: { [defaultNS]: trTranslations },\n };\n\n /**\n * dayjs.defineLanguage('nl') also changes the global locale. We don't want to do that\n * when a user calls the registerTranslation() function. So instead we will store the\n * locale configs given to the registerTranslation() function in `dayjsLocales` object,\n * and register the required locale with moment when setLanguage is called.\n */\n dayjsLocales: { [key: string]: Partial<ILocale> } = {};\n\n /**\n * Initialize properties used in constructor\n */\n logger: (msg?: string) => void;\n currentLanguage: string;\n DateTimeParser: typeof Dayjs | typeof moment;\n isCustomDateTimeParser: boolean;\n i18nextConfig: I18NextConfig;\n\n /**\n * Constructor accepts following options:\n * - language (String) default: 'en'\n * Language code e.g., en, tr\n *\n * - translationsForLanguage (object)\n * Translations object. Please check src/i18n/en.json for example.\n *\n * - disableDateTimeTranslations (boolean) default: false\n * Disable translations for date-times\n *\n * - debug (boolean) default: false\n * Enable debug mode in internal i18n class\n *\n * - logger (function) default: () => {}\n * Logger function to log warnings/errors from this class\n *\n * - dayjsLocaleConfigForLanguage (object) default: 'enConfig'\n * [Config object](https://momentjs.com/docs/#/i18n/changing-locale/) for internal moment object,\n * corresponding to language (param)\n *\n * - DateTimeParser (function) Moment or Dayjs instance/function.\n * Make sure to load all the required locales in this Moment or Dayjs instance that you will be provide to Streami18n\n *\n * @param {*} options\n */\n constructor(options: Options = {}, i18nextConfig: Partial<I18NextConfig> = {}) {\n const finalOptions = {\n ...defaultStreami18nOptions,\n ...options,\n };\n\n // Prepare the i18next configuration.\n this.logger = finalOptions.logger;\n\n this.currentLanguage = finalOptions.language;\n this.DateTimeParser = finalOptions.DateTimeParser;\n\n try {\n /**\n * This is a shallow check to see if the given parser is an instance of Dayjs.\n * For some reason Dayjs.isDayjs(this.DateTimeParser()) doesn't work.\n */\n if (this.DateTimeParser && isDayJs(this.DateTimeParser)) {\n this.DateTimeParser.extend(LocalizedFormat);\n this.DateTimeParser.extend(calendar);\n this.DateTimeParser.extend(localeData);\n this.DateTimeParser.extend(relativeTime);\n }\n } catch (error) {\n throw new Error(\n `Streami18n: Looks like you wanted to provide a Dayjs instance but something went wrong while adding plugins ${JSON.stringify(\n error,\n )}`,\n );\n }\n\n this.isCustomDateTimeParser = !!options.DateTimeParser;\n const translationsForLanguage = finalOptions.translationsForLanguage;\n\n if (translationsForLanguage) {\n this.translations[this.currentLanguage] = {\n [defaultNS]:\n this.translations[this.currentLanguage] &&\n this.translations[this.currentLanguage][defaultNS]\n ? {\n ...this.translations[this.currentLanguage][defaultNS],\n ...translationsForLanguage,\n }\n : translationsForLanguage,\n };\n }\n\n // If translations don't exist for given language, then set it as empty object.\n if (!this.translations[this.currentLanguage]) {\n this.translations[this.currentLanguage] = {\n [defaultNS]: {},\n };\n }\n\n this.i18nextConfig = {\n debug: finalOptions.debug,\n fallbackLng: false,\n interpolation: { escapeValue: false },\n keySeparator: false,\n lng: this.currentLanguage,\n nsSeparator: false,\n\n parseMissingKeyHandler: (key: string) => {\n this.logger(`Streami18n: Missing translation for key: ${key}`);\n\n return key;\n },\n ...i18nextConfig,\n };\n\n this.validateCurrentLanguage();\n\n const dayjsLocaleConfigForLanguage = finalOptions.dayjsLocaleConfigForLanguage;\n\n if (dayjsLocaleConfigForLanguage) {\n this.addOrUpdateLocale(this.currentLanguage, {\n ...dayjsLocaleConfigForLanguage,\n });\n } else if (!this.localeExists(this.currentLanguage)) {\n this.logger(\n `Streami18n: Streami18n(...) - Locale config for ${this.currentLanguage} does not exist in momentjs.` +\n `Please import the locale file using \"import 'moment/locale/${this.currentLanguage}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n this.tDateTimeParser = (timestamp) => {\n if (finalOptions.disableDateTimeTranslations || !this.localeExists(this.currentLanguage)) {\n /**\n * TS needs to know which is being called to accept the chain call\n */\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n }\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n };\n }\n\n /**\n * Initializes the i18next instance with configuration (which enables natural language as default keys)\n */\n async init() {\n this.validateCurrentLanguage();\n\n try {\n this.t = await this.i18nInstance.init({\n ...this.i18nextConfig,\n lng: this.currentLanguage,\n resources: this.translations,\n });\n this.initialized = true;\n } catch (error) {\n this.logger(`Something went wrong with init: ${JSON.stringify(error)}`);\n }\n\n return {\n t: this.t,\n tDateTimeParser: this.tDateTimeParser,\n };\n }\n\n localeExists = (language: string) => {\n if (this.isCustomDateTimeParser) return true;\n\n return Object.keys(Dayjs.Ls).indexOf(language) > -1;\n };\n\n validateCurrentLanguage = () => {\n const availableLanguages = Object.keys(this.translations);\n if (availableLanguages.indexOf(this.currentLanguage) === -1) {\n this.logger(\n `Streami18n: '${this.currentLanguage}' language is not registered.` +\n ` Please make sure to call streami18n.registerTranslation('${this.currentLanguage}', {...}) or ` +\n `use one the built-in supported languages - ${this.getAvailableLanguages()}`,\n );\n\n this.currentLanguage = defaultLng;\n }\n };\n\n /** Returns an instance of i18next used within this class instance */\n geti18Instance = () => this.i18nInstance;\n\n /** Returns list of available languages. */\n getAvailableLanguages = () => Object.keys(this.translations);\n\n /** Returns all the translation dictionary for all inbuilt-languages */\n getTranslations = () => this.translations;\n\n /**\n * Returns current version translator function.\n */\n async getTranslators() {\n if (!this.initialized) {\n if (this.dayjsLocales[this.currentLanguage]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n return await this.init();\n } else {\n return {\n t: this.t,\n tDateTimeParser: this.tDateTimeParser,\n };\n }\n }\n\n /**\n * Register translation\n */\n registerTranslation(\n language: string,\n translation: Partial<typeof enTranslations> | DefaultStreamChatGenerics,\n customDayjsLocale?: Partial<ILocale>,\n ) {\n if (!translation) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) called without translation`,\n );\n return;\n }\n\n if (!this.translations[language]) {\n this.translations[language] = { [defaultNS]: translation };\n } else {\n this.translations[language][defaultNS] = translation;\n }\n\n if (customDayjsLocale) {\n this.dayjsLocales[language] = { ...customDayjsLocale };\n } else if (!this.localeExists(language)) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) - ` +\n `Locale config for ${language} does not exist in Dayjs.` +\n `Please import the locale file using \"import 'dayjs/locale/${language}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n if (this.initialized) {\n this.i18nInstance.addResources(language, defaultNS, translation);\n }\n }\n\n addOrUpdateLocale(key: string, config: Partial<ILocale>) {\n if (this.localeExists(key)) {\n Dayjs.updateLocale(key, { ...config });\n } else {\n // Merging the custom locale config with en config, so missing keys can default to english.\n Dayjs.locale({ name: key, ...en_locale, ...config }, undefined, true);\n }\n }\n\n /**\n * Changes the language.\n */\n async setLanguage(language: string) {\n this.currentLanguage = language;\n\n if (!this.initialized) return;\n\n try {\n const t = await this.i18nInstance.changeLanguage(language);\n if (this.dayjsLocales[language]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n this.setLanguageCallback(t);\n\n return t;\n } catch (error) {\n this.logger(`Failed to set language: ${JSON.stringify(error)}`);\n return this.t;\n }\n }\n\n registerSetLanguageCallback(callback: (t: TFunction) => void) {\n this.setLanguageCallback = callback;\n }\n}\n"]}
|
package/lib/module/version.json
CHANGED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"1 Reply": "תגובה אחת",
|
|
3
|
+
"1 Thread Reply": "תגובה אחת לשרשור",
|
|
4
|
+
"Allow access to your Gallery": "אפשר גישה לגלריה שלך",
|
|
5
|
+
"Also send to channel": "שלח/י הודעה לשיחה",
|
|
6
|
+
"Are you sure you want to permanently delete this message?": "האם את/ה בטוח/ה שאת/ה רוצה למחוק את ההודעה הזו לצמיתות?",
|
|
7
|
+
"Block User": "חסום משתמש",
|
|
8
|
+
"Cancel": "ביטול",
|
|
9
|
+
"Cannot Flag Message": "סימון הודעה לא אפשרי",
|
|
10
|
+
"Copy Message": "העתק/י הודעה",
|
|
11
|
+
"Delete": "מחק",
|
|
12
|
+
"Delete Message": "מחק/י הודעה",
|
|
13
|
+
"Do you want to send a copy of this message to a moderator for further investigation?": "האם את/ה רוצה לשלוח עותק של הודעה זו למנחה להמשך חקירה?",
|
|
14
|
+
"Edit Message": "ערוך הודעה",
|
|
15
|
+
"Editing Message": "הודעה בעריכה",
|
|
16
|
+
"Emoji matching": "התאמת אמוג'י",
|
|
17
|
+
"Empty message...": "הודעה ריקה...",
|
|
18
|
+
"Error loading": "שגיאה ארעה בעת הטעינה",
|
|
19
|
+
"Error loading channel list...": "שגיאה ארעה בטעינת השיחות...",
|
|
20
|
+
"Error loading messages for this channel...": "שגיאה ארעה בטעינת הודעות עבור שיחה זאת...",
|
|
21
|
+
"Error while loading, please reload/refresh": "שגיאה ארעה בזמן הטעינה, אנא טען מחדש/רענן",
|
|
22
|
+
"File type not supported": "סוג הקובץ אינו נתמך",
|
|
23
|
+
"Flag": "סמן",
|
|
24
|
+
"Flag Message": "סמן הודעה",
|
|
25
|
+
"Flag action failed either due to a network issue or the message is already flagged": "פעולת הסימון נכשלה בגלל בעיית רשת או שההודעה כבר סומנה.",
|
|
26
|
+
"Instant Commands": "פעולות מיידיות",
|
|
27
|
+
"Links are disabled": "הקישורים מבוטלים",
|
|
28
|
+
"Loading channels...": "השיחות בטעינה...",
|
|
29
|
+
"Loading messages...": "ההודעות בטעינה..",
|
|
30
|
+
"Loading...": "טוען...",
|
|
31
|
+
"Message Reactions": "תגובות להודעה",
|
|
32
|
+
"Message deleted": "ההודעה נמחקה",
|
|
33
|
+
"Message flagged": "ההודעה סומנה",
|
|
34
|
+
"Mute User": "השתק/י משתמש",
|
|
35
|
+
"Not supported": "לא נתמך",
|
|
36
|
+
"Nothing yet...": "אינפורמציה תתקבל בהמשך...",
|
|
37
|
+
"Ok": "אוקיי",
|
|
38
|
+
"Only visible to you": "גלוי רק לך",
|
|
39
|
+
"Photo": "תמונה",
|
|
40
|
+
"Photos": "תמונות",
|
|
41
|
+
"Pin to Conversation": "הצמד/י לשיחה",
|
|
42
|
+
"Please enable access to your photos and videos so you can share them.": "אפשר/י גישה לתמונות ולסרטונים שלך כדי שתוכל/י לשתף אותם.",
|
|
43
|
+
"Please select a channel first": "אנא בחר/י שיחה תחילה",
|
|
44
|
+
"Reconnecting...": "מתחבר מחדש...",
|
|
45
|
+
"Reply": "השב/י",
|
|
46
|
+
"Reply to Message": "השב/י להודעה",
|
|
47
|
+
"Resend": "שלח/י שוב",
|
|
48
|
+
"Search GIFs": "חפש/י GIFs",
|
|
49
|
+
"Send a message": "שלח/י הודעה",
|
|
50
|
+
"Sending links is not allowed in this conversation": "שליחת קישורים אינה מותרת בשיחה זו",
|
|
51
|
+
"Slow mode ON": "מצב איטי מופעל",
|
|
52
|
+
"The message has been reported to a moderator.": "ההודעה דווחה למנהל",
|
|
53
|
+
"Thread Reply": "הגב/י בשרשור",
|
|
54
|
+
"Unblock User": "בטל/י חסימת משתמש",
|
|
55
|
+
"Unknown User": "משתמש לא ידוע",
|
|
56
|
+
"Unmute User": "בטל/י השתקת משתמש",
|
|
57
|
+
"Unpin from Conversation": "בטל/י הצמדה לשיחה",
|
|
58
|
+
"Unread Messages": "הודעות שטרם נקרו",
|
|
59
|
+
"You": "את/ה",
|
|
60
|
+
"You can't send messages in this channel": "את/ב לא יכול/ה לשלוח הודעות בשיחה זו",
|
|
61
|
+
"{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} ו-{{ nonSelfUserLength }} משתמש/ים אחר/ים מקלידים",
|
|
62
|
+
"{{ index }} of {{ photoLength }}": "{{ index }} מתוך {{ photoLength }}",
|
|
63
|
+
"{{ replyCount }} Replies": "{{ replyCount }} תגובות",
|
|
64
|
+
"{{ replyCount }} Thread Replies": "{{ replyCount }} תגובות שרשור",
|
|
65
|
+
"{{ user }} is typing": "{{ user }} מקליד/ה",
|
|
66
|
+
"🏙 Attachment...": "🏙 קובץ מצורף..."
|
|
67
|
+
}
|
|
@@ -14,4 +14,5 @@ export { default as itTranslations } from './i18n/it.json';
|
|
|
14
14
|
export { default as nlTranslations } from './i18n/nl.json';
|
|
15
15
|
export { default as ruTranslations } from './i18n/ru.json';
|
|
16
16
|
export { default as trTranslations } from './i18n/tr.json';
|
|
17
|
+
export { default as heTranslations } from './i18n/he.json';
|
|
17
18
|
export { version } from './version.json';
|
|
@@ -11,6 +11,7 @@ import 'dayjs/locale/ko';
|
|
|
11
11
|
import 'dayjs/locale/nl';
|
|
12
12
|
import 'dayjs/locale/ru';
|
|
13
13
|
import 'dayjs/locale/tr';
|
|
14
|
+
import 'dayjs/locale/he';
|
|
14
15
|
/**
|
|
15
16
|
* These locale imports also set these locales globally.
|
|
16
17
|
* So as a last step we import the english locale to make
|
|
@@ -154,10 +155,6 @@ export declare class Streami18n {
|
|
|
154
155
|
"Please enable access to your photos and videos so you can share them.": string;
|
|
155
156
|
"Please select a channel first": string;
|
|
156
157
|
"Reconnecting...": string;
|
|
157
|
-
/**
|
|
158
|
-
* Hindi notation for meridiems are quite fuzzy in practice. While there exists
|
|
159
|
-
* a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
|
|
160
|
-
*/
|
|
161
158
|
Reply: string;
|
|
162
159
|
"Reply to Message": string;
|
|
163
160
|
Resend: string;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stream-chat-react-native-core",
|
|
3
3
|
"description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.8.0-beta.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"company": "Stream.io Inc",
|
|
7
7
|
"name": "Stream.io Inc"
|
package/src/i18n/he.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"1 Reply": "תגובה אחת",
|
|
3
|
+
"1 Thread Reply": "תגובה אחת לשרשור",
|
|
4
|
+
"Allow access to your Gallery": "אפשר גישה לגלריה שלך",
|
|
5
|
+
"Also send to channel": "שלח/י הודעה לשיחה",
|
|
6
|
+
"Are you sure you want to permanently delete this message?": "האם את/ה בטוח/ה שאת/ה רוצה למחוק את ההודעה הזו לצמיתות?",
|
|
7
|
+
"Block User": "חסום משתמש",
|
|
8
|
+
"Cancel": "ביטול",
|
|
9
|
+
"Cannot Flag Message": "סימון הודעה לא אפשרי",
|
|
10
|
+
"Copy Message": "העתק/י הודעה",
|
|
11
|
+
"Delete": "מחק",
|
|
12
|
+
"Delete Message": "מחק/י הודעה",
|
|
13
|
+
"Do you want to send a copy of this message to a moderator for further investigation?": "האם את/ה רוצה לשלוח עותק של הודעה זו למנחה להמשך חקירה?",
|
|
14
|
+
"Edit Message": "ערוך הודעה",
|
|
15
|
+
"Editing Message": "הודעה בעריכה",
|
|
16
|
+
"Emoji matching": "התאמת אמוג'י",
|
|
17
|
+
"Empty message...": "הודעה ריקה...",
|
|
18
|
+
"Error loading": "שגיאה ארעה בעת הטעינה",
|
|
19
|
+
"Error loading channel list...": "שגיאה ארעה בטעינת השיחות...",
|
|
20
|
+
"Error loading messages for this channel...": "שגיאה ארעה בטעינת הודעות עבור שיחה זאת...",
|
|
21
|
+
"Error while loading, please reload/refresh": "שגיאה ארעה בזמן הטעינה, אנא טען מחדש/רענן",
|
|
22
|
+
"File type not supported": "סוג הקובץ אינו נתמך",
|
|
23
|
+
"Flag": "סמן",
|
|
24
|
+
"Flag Message": "סמן הודעה",
|
|
25
|
+
"Flag action failed either due to a network issue or the message is already flagged": "פעולת הסימון נכשלה בגלל בעיית רשת או שההודעה כבר סומנה.",
|
|
26
|
+
"Instant Commands": "פעולות מיידיות",
|
|
27
|
+
"Links are disabled": "הקישורים מבוטלים",
|
|
28
|
+
"Loading channels...": "השיחות בטעינה...",
|
|
29
|
+
"Loading messages...": "ההודעות בטעינה..",
|
|
30
|
+
"Loading...": "טוען...",
|
|
31
|
+
"Message Reactions": "תגובות להודעה",
|
|
32
|
+
"Message deleted": "ההודעה נמחקה",
|
|
33
|
+
"Message flagged": "ההודעה סומנה",
|
|
34
|
+
"Mute User": "השתק/י משתמש",
|
|
35
|
+
"Not supported": "לא נתמך",
|
|
36
|
+
"Nothing yet...": "אינפורמציה תתקבל בהמשך...",
|
|
37
|
+
"Ok": "אוקיי",
|
|
38
|
+
"Only visible to you": "גלוי רק לך",
|
|
39
|
+
"Photo": "תמונה",
|
|
40
|
+
"Photos": "תמונות",
|
|
41
|
+
"Pin to Conversation": "הצמד/י לשיחה",
|
|
42
|
+
"Please enable access to your photos and videos so you can share them.": "אפשר/י גישה לתמונות ולסרטונים שלך כדי שתוכל/י לשתף אותם.",
|
|
43
|
+
"Please select a channel first": "אנא בחר/י שיחה תחילה",
|
|
44
|
+
"Reconnecting...": "מתחבר מחדש...",
|
|
45
|
+
"Reply": "השב/י",
|
|
46
|
+
"Reply to Message": "השב/י להודעה",
|
|
47
|
+
"Resend": "שלח/י שוב",
|
|
48
|
+
"Search GIFs": "חפש/י GIFs",
|
|
49
|
+
"Send a message": "שלח/י הודעה",
|
|
50
|
+
"Sending links is not allowed in this conversation": "שליחת קישורים אינה מותרת בשיחה זו",
|
|
51
|
+
"Slow mode ON": "מצב איטי מופעל",
|
|
52
|
+
"The message has been reported to a moderator.": "ההודעה דווחה למנהל",
|
|
53
|
+
"Thread Reply": "הגב/י בשרשור",
|
|
54
|
+
"Unblock User": "בטל/י חסימת משתמש",
|
|
55
|
+
"Unknown User": "משתמש לא ידוע",
|
|
56
|
+
"Unmute User": "בטל/י השתקת משתמש",
|
|
57
|
+
"Unpin from Conversation": "בטל/י הצמדה לשיחה",
|
|
58
|
+
"Unread Messages": "הודעות שטרם נקרו",
|
|
59
|
+
"You": "את/ה",
|
|
60
|
+
"You can't send messages in this channel": "את/ב לא יכול/ה לשלוח הודעות בשיחה זו",
|
|
61
|
+
"{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} ו-{{ nonSelfUserLength }} משתמש/ים אחר/ים מקלידים",
|
|
62
|
+
"{{ index }} of {{ photoLength }}": "{{ index }} מתוך {{ photoLength }}",
|
|
63
|
+
"{{ replyCount }} Replies": "{{ replyCount }} תגובות",
|
|
64
|
+
"{{ replyCount }} Thread Replies": "{{ replyCount }} תגובות שרשור",
|
|
65
|
+
"{{ user }} is typing": "{{ user }} מקליד/ה",
|
|
66
|
+
"🏙 Attachment...": "🏙 קובץ מצורף..."
|
|
67
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -18,5 +18,6 @@ export { default as itTranslations } from './i18n/it.json';
|
|
|
18
18
|
export { default as nlTranslations } from './i18n/nl.json';
|
|
19
19
|
export { default as ruTranslations } from './i18n/ru.json';
|
|
20
20
|
export { default as trTranslations } from './i18n/tr.json';
|
|
21
|
+
export { default as heTranslations } from './i18n/he.json';
|
|
21
22
|
|
|
22
23
|
export { version } from './version.json';
|
package/src/utils/Streami18n.ts
CHANGED
|
@@ -11,6 +11,7 @@ import type moment from 'moment';
|
|
|
11
11
|
import type { TDateTimeParser } from '../contexts/translationContext/TranslationContext';
|
|
12
12
|
import enTranslations from '../i18n/en.json';
|
|
13
13
|
import frTranslations from '../i18n/fr.json';
|
|
14
|
+
import heTranslations from '../i18n/he.json';
|
|
14
15
|
import hiTranslations from '../i18n/hi.json';
|
|
15
16
|
import itTranslations from '../i18n/it.json';
|
|
16
17
|
import jaTranslations from '../i18n/ja.json';
|
|
@@ -19,9 +20,6 @@ import nlTranslations from '../i18n/nl.json';
|
|
|
19
20
|
import ruTranslations from '../i18n/ru.json';
|
|
20
21
|
import trTranslations from '../i18n/tr.json';
|
|
21
22
|
|
|
22
|
-
const defaultNS = 'translation';
|
|
23
|
-
const defaultLng = 'en';
|
|
24
|
-
|
|
25
23
|
import 'dayjs/locale/fr';
|
|
26
24
|
import 'dayjs/locale/hi';
|
|
27
25
|
import 'dayjs/locale/it';
|
|
@@ -30,6 +28,7 @@ import 'dayjs/locale/ko';
|
|
|
30
28
|
import 'dayjs/locale/nl';
|
|
31
29
|
import 'dayjs/locale/ru';
|
|
32
30
|
import 'dayjs/locale/tr';
|
|
31
|
+
import 'dayjs/locale/he';
|
|
33
32
|
|
|
34
33
|
/**
|
|
35
34
|
* These locale imports also set these locales globally.
|
|
@@ -40,6 +39,9 @@ import 'dayjs/locale/en';
|
|
|
40
39
|
|
|
41
40
|
import type { DefaultStreamChatGenerics } from '../types/types';
|
|
42
41
|
|
|
42
|
+
const defaultNS = 'translation';
|
|
43
|
+
const defaultLng = 'en';
|
|
44
|
+
|
|
43
45
|
Dayjs.extend(updateLocale);
|
|
44
46
|
|
|
45
47
|
Dayjs.updateLocale('en', {
|
|
@@ -357,6 +359,7 @@ export class Streami18n {
|
|
|
357
359
|
} = {
|
|
358
360
|
en: { [defaultNS]: enTranslations },
|
|
359
361
|
fr: { [defaultNS]: frTranslations },
|
|
362
|
+
he: { [defaultNS]: heTranslations },
|
|
360
363
|
hi: { [defaultNS]: hiTranslations },
|
|
361
364
|
it: { [defaultNS]: itTranslations },
|
|
362
365
|
ja: { [defaultNS]: jaTranslations },
|
package/src/version.json
CHANGED