merge devel with arabic support
This commit is contained in:
@@ -41,6 +41,7 @@ The app is fully internationalized using [React-Intl](https://github.com/formatj
|
|||||||
|
|
||||||
The app is currently available in the following languages:
|
The app is currently available in the following languages:
|
||||||
* English - default
|
* English - default
|
||||||
|
* Arabic
|
||||||
* Chinese simplified
|
* Chinese simplified
|
||||||
* Chinese traditional
|
* Chinese traditional
|
||||||
* French
|
* French
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
"web"
|
"web"
|
||||||
],
|
],
|
||||||
"locales": [
|
"locales": [
|
||||||
|
"ar",
|
||||||
"de",
|
"de",
|
||||||
"en",
|
"en",
|
||||||
"es",
|
"es",
|
||||||
|
|||||||
+9
-4
@@ -53,10 +53,14 @@ const i18n = {
|
|||||||
'zh-TW': {
|
'zh-TW': {
|
||||||
'new_message': "新訊息",
|
'new_message': "新訊息",
|
||||||
'new_chat': "新聊天",
|
'new_chat': "新聊天",
|
||||||
|
},
|
||||||
|
'ar': {
|
||||||
|
'new_message': "رسالة جديدة",
|
||||||
|
'new_chat': "محادثة جديدة",
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
self.i18nMessage = function(id) {
|
self.i18nMessage = function (id) {
|
||||||
if (!id) {
|
if (!id) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -82,7 +86,7 @@ fbMessaging.onBackgroundMessage(payload => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const titles = {'msg': 'new_message', 'sub': 'new_chat'};
|
const titles = { 'msg': 'new_message', 'sub': 'new_chat' };
|
||||||
const pushType = payload.data.what || 'msg';
|
const pushType = payload.data.what || 'msg';
|
||||||
const title = payload.data.title || self.i18nMessage(titles[pushType]);
|
const title = payload.data.title || self.i18nMessage(titles[pushType]);
|
||||||
if (title) {
|
if (title) {
|
||||||
@@ -119,7 +123,8 @@ self.addEventListener('notificationclick', event => {
|
|||||||
|
|
||||||
event.waitUntil(self.clients.matchAll({
|
event.waitUntil(self.clients.matchAll({
|
||||||
type: 'window',
|
type: 'window',
|
||||||
includeUncontrolled: true})
|
includeUncontrolled: true
|
||||||
|
})
|
||||||
.then(windowClients => {
|
.then(windowClients => {
|
||||||
let anyClient = null;
|
let anyClient = null;
|
||||||
for (let i = 0; i < windowClients.length; i++) {
|
for (let i = 0; i < windowClients.length; i++) {
|
||||||
@@ -162,7 +167,7 @@ self.addEventListener('fetch', event => {
|
|||||||
|
|
||||||
const reqUrl = new URL(event.request.url);
|
const reqUrl = new URL(event.request.url);
|
||||||
// Using ignoreSearch=true to read cached images and docs despite different auth signatures.
|
// Using ignoreSearch=true to read cached images and docs despite different auth signatures.
|
||||||
const cachedResponse = await cache.match(event.request, {ignoreSearch: (self.location.origin == reqUrl.origin)});
|
const cachedResponse = await cache.match(event.request, { ignoreSearch: (self.location.origin == reqUrl.origin) });
|
||||||
if (cachedResponse) {
|
if (cachedResponse) {
|
||||||
return cachedResponse;
|
return cachedResponse;
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
+1742
File diff suppressed because it is too large
Load Diff
@@ -24,6 +24,7 @@ if (typeof FIREBASE_INIT != 'undefined' && FIREBASE_INIT && FIREBASE_INIT.measur
|
|||||||
|
|
||||||
// Allow loading translation strings for just one language.
|
// Allow loading translation strings for just one language.
|
||||||
const messageLoader = {
|
const messageLoader = {
|
||||||
|
'ar': _ => import('./i18n.min/ar.json'),
|
||||||
'de': _ => import('./i18n.min/de.json'),
|
'de': _ => import('./i18n.min/de.json'),
|
||||||
'en': _ => import('./i18n.min/en.json'),
|
'en': _ => import('./i18n.min/en.json'),
|
||||||
'es': _ => import('./i18n.min/es.json'),
|
'es': _ => import('./i18n.min/es.json'),
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -22406,6 +22406,7 @@ if (typeof FIREBASE_INIT != 'undefined' && FIREBASE_INIT && FIREBASE_INIT.measur
|
|||||||
gtag('config', FIREBASE_INIT.measurementId);
|
gtag('config', FIREBASE_INIT.measurementId);
|
||||||
}
|
}
|
||||||
const messageLoader = {
|
const messageLoader = {
|
||||||
|
'ar': _ => __webpack_require__.e(/*! import() */ "src_i18n_min_ar_json").then(__webpack_require__.t.bind(__webpack_require__, /*! ./i18n.min/ar.json */ "./src/i18n.min/ar.json", 19)),
|
||||||
'de': _ => __webpack_require__.e(/*! import() */ "src_i18n_min_de_json").then(__webpack_require__.t.bind(__webpack_require__, /*! ./i18n.min/de.json */ "./src/i18n.min/de.json", 19)),
|
'de': _ => __webpack_require__.e(/*! import() */ "src_i18n_min_de_json").then(__webpack_require__.t.bind(__webpack_require__, /*! ./i18n.min/de.json */ "./src/i18n.min/de.json", 19)),
|
||||||
'en': _ => __webpack_require__.e(/*! import() */ "src_i18n_min_en_json").then(__webpack_require__.t.bind(__webpack_require__, /*! ./i18n.min/en.json */ "./src/i18n.min/en.json", 19)),
|
'en': _ => __webpack_require__.e(/*! import() */ "src_i18n_min_en_json").then(__webpack_require__.t.bind(__webpack_require__, /*! ./i18n.min/en.json */ "./src/i18n.min/en.json", 19)),
|
||||||
'es': _ => __webpack_require__.e(/*! import() */ "src_i18n_min_es_json").then(__webpack_require__.t.bind(__webpack_require__, /*! ./i18n.min/es.json */ "./src/i18n.min/es.json", 19)),
|
'es': _ => __webpack_require__.e(/*! import() */ "src_i18n_min_es_json").then(__webpack_require__.t.bind(__webpack_require__, /*! ./i18n.min/es.json */ "./src/i18n.min/es.json", 19)),
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user