fix: Update browser_language logic to include all languages (#5090)

This commit is contained in:
Pranav Raj S
2022-07-22 13:14:17 +05:30
committed by GitHub
parent 6a6a37a67b
commit 32291f4f7d
6 changed files with 693 additions and 61 deletions

View File

@@ -36,9 +36,10 @@ class Api::V1::Widget::BaseController < ApplicationController
contact_id: @contact.id,
contact_inbox_id: @contact_inbox.id,
additional_attributes: {
browser_language: browser.accept_language&.first&.code,
browser: browser_params,
referer: permitted_params[:message][:referer_url],
initiated_at: timestamp_params
initiated_at: timestamp_params,
referer: permitted_params[:message][:referer_url]
},
custom_attributes: permitted_params[:custom_attributes].presence || {}
}

View File

@@ -1,132 +1,742 @@
const languages = [
{
id: 'eng',
name: 'English (en)',
name: 'Abkhazian',
id: 'ab',
},
{
name: 'Afar',
id: 'aa',
},
{
name: 'Afrikaans',
id: 'af',
},
{
name: 'Akan',
id: 'ak',
},
{
name: 'Albanian',
id: 'sq',
},
{
name: 'Amharic',
id: 'am',
},
{
name: 'Arabic',
id: 'ar',
name: 'العربية (ar)',
},
{
id: 'nl',
name: 'Nederlands (nl)',
name: 'Aragonese',
id: 'an',
},
{
id: 'fr',
name: 'Français (fr)',
name: 'Armenian',
id: 'hy',
},
{
id: 'de',
name: 'Deutsch (de)',
name: 'Assamese',
id: 'as',
},
{
id: 'हिन्दी (hi)',
name: 'hi',
name: 'Avaric',
id: 'av',
},
{
id: 'it',
name: 'Italiano (it)',
name: 'Avestan',
id: 'ae',
},
{
id: 'ja',
name: '日本語 (ja)',
name: 'Aymara',
id: 'ay',
},
{
id: 'ko',
name: '한국어 (ko)',
name: 'Azerbaijani',
id: 'az',
},
{
id: 'pt',
name: 'Português (pt)',
name: 'Bambara',
id: 'bm',
},
{
id: 'ru',
name: 'русский (ru)',
name: 'Bashkir',
id: 'ba',
},
{
id: 'zh',
name: '中文 (zh)',
name: 'Basque',
id: 'eu',
},
{
id: 'es',
name: 'Español (es)',
name: 'Belarusian',
id: 'be',
},
{
id: 'ml',
name: 'മലയാളം (ml)',
name: 'Bengali',
id: 'bn',
},
{
name: 'Bislama',
id: 'bi',
},
{
name: 'Bosnian',
id: 'bs',
},
{
name: 'Breton',
id: 'br',
},
{
name: 'Bulgarian',
id: 'bg',
},
{
name: 'Burmese',
id: 'my',
},
{
name: 'Catalan',
id: 'ca',
name: 'Català (ca)',
},
{
id: 'el',
name: 'ελληνικά (el)',
name: 'Chamorro',
id: 'ch',
},
{
id: 'pt-BR',
name: 'Português Brasileiro (pt-BR)',
name: 'Chechen',
id: 'ce',
},
{
id: 'ro',
name: 'Română (ro)',
name: 'Chichewa',
id: 'ny',
},
{
id: 'ta',
name: 'தமிழ் (ta)',
name: 'Chinese',
id: 'zh',
},
{
id: 'fa',
name: 'فارسی (fa)',
name: 'Church Slavonic',
id: 'cu',
},
{
id: 'zh-TW',
name: '中文 (台湾) (zh-TW)',
name: 'Chuvash',
id: 'cv',
},
{
id: 'vi',
name: 'Tiếng Việt (vi)',
name: 'Cornish',
id: 'kw',
},
{
id: 'da',
name: 'dansk (da)',
name: 'Corsican',
id: 'co',
},
{
id: 'tr',
name: 'Türkçe (tr)',
name: 'Cree',
id: 'cr',
},
{
name: 'Croatian',
id: 'hr',
},
{
name: 'Czech',
id: 'cs',
name: 'čeština (cs)',
},
{
name: 'Danish',
id: 'da',
},
{
name: 'Divehi',
id: 'dv',
},
{
name: 'Dutch',
id: 'nl',
},
{
name: 'Dzongkha',
id: 'dz',
},
{
name: 'English',
id: 'en',
},
{
name: 'Esperanto',
id: 'eo',
},
{
name: 'Estonian',
id: 'et',
},
{
name: 'Ewe',
id: 'ee',
},
{
name: 'Faroese',
id: 'fo',
},
{
name: 'Fijian',
id: 'fj',
},
{
name: 'Finnish',
id: 'fi',
name: 'suomi, suomen kieli (fi)',
},
{
id: 'id',
name: 'Bahasa Indonesia (id)',
name: 'French',
id: 'fr',
},
{
id: 'sv',
name: 'Svenska (sv)',
name: 'Western Frisian',
id: 'fy',
},
{
name: 'Fulah',
id: 'ff',
},
{
name: 'Gaelic',
id: 'gd',
},
{
name: 'Galician',
id: 'gl',
},
{
name: 'Ganda',
id: 'lg',
},
{
name: 'Georgian',
id: 'ka',
},
{
name: 'German',
id: 'de',
},
{
name: 'Greek',
id: 'el',
},
{
name: 'Kalaallisut',
id: 'kl',
},
{
name: 'Guarani',
id: 'gn',
},
{
name: 'Gujarati',
id: 'gu',
},
{
name: 'Haitian',
id: 'ht',
},
{
name: 'Hausa',
id: 'ha',
},
{
name: 'Hebrew',
id: 'he',
},
{
name: 'Herero',
id: 'hz',
},
{
name: 'Hindi',
id: 'hi',
},
{
name: 'Hiri Motu',
id: 'ho',
},
{
name: 'Hungarian',
id: 'hu',
name: 'magyar nyelv (hu)',
},
{
name: 'Icelandic',
id: 'is',
},
{
name: 'Ido',
id: 'io',
},
{
name: 'Igbo',
id: 'ig',
},
{
name: 'Indonesian',
id: 'id',
},
{
name: 'Interlingua',
id: 'ia',
},
{
name: 'Interlingue',
id: 'ie',
},
{
name: 'Inuktitut',
id: 'iu',
},
{
name: 'Inupiaq',
id: 'ik',
},
{
name: 'Irish',
id: 'ga',
},
{
name: 'Italian',
id: 'it',
},
{
name: 'Japanese',
id: 'ja',
},
{
name: 'Javanese',
id: 'jv',
},
{
name: 'Kannada',
id: 'kn',
},
{
name: 'Kanuri',
id: 'kr',
},
{
name: 'Kashmiri',
id: 'ks',
},
{
name: 'Kazakh',
id: 'kk',
},
{
name: 'Central Khmer',
id: 'km',
},
{
name: 'Kikuyu',
id: 'ki',
},
{
name: 'Kinyarwanda',
id: 'rw',
},
{
name: 'Kirghiz',
id: 'ky',
},
{
name: 'Komi',
id: 'kv',
},
{
name: 'Kongo',
id: 'kg',
},
{
name: 'Korean',
id: 'ko',
},
{
name: 'Kuanyama',
id: 'kj',
},
{
name: 'Kurdish',
id: 'ku',
},
{
name: 'Lao',
id: 'lo',
},
{
name: 'Latin',
id: 'la',
},
{
name: 'Latvian',
id: 'lv',
},
{
name: 'Limburgan',
id: 'li',
},
{
name: 'Lingala',
id: 'ln',
},
{
name: 'Lithuanian',
id: 'lt',
},
{
name: 'Luba-Katanga',
id: 'lu',
},
{
name: 'Luxembourgish',
id: 'lb',
},
{
name: 'Macedonian',
id: 'mk',
},
{
name: 'Malagasy',
id: 'mg',
},
{
name: 'Malay',
id: 'ms',
},
{
name: 'Malayalam',
id: 'ml',
},
{
name: 'Maltese',
id: 'mt',
},
{
name: 'Manx',
id: 'gv',
},
{
name: 'Maori',
id: 'mi',
},
{
name: 'Marathi',
id: 'mr',
},
{
name: 'Marshallese',
id: 'mh',
},
{
name: 'Mongolian',
id: 'mn',
},
{
name: 'Nauru',
id: 'na',
},
{
name: 'Navajo',
id: 'nv',
},
{
name: 'North Ndebele',
id: 'nd',
},
{
name: 'South Ndebele',
id: 'nr',
},
{
name: 'Ndonga',
id: 'ng',
},
{
name: 'Nepali',
id: 'ne',
},
{
name: 'Norwegian',
id: 'no',
name: 'norsk (no)',
},
{
id: 'zh-CN',
name: '中文 (zh-CN)',
name: 'Norwegian Bokmål',
id: 'nb',
},
{
name: 'Norwegian Nynorsk',
id: 'nn',
},
{
name: 'Sichuan Yi',
id: 'ii',
},
{
name: 'Occitan',
id: 'oc',
},
{
name: 'Ojibwa',
id: 'oj',
},
{
name: 'Oriya',
id: 'or',
},
{
name: 'Oromo',
id: 'om',
},
{
name: 'Ossetian',
id: 'os',
},
{
name: 'Pali',
id: 'pi',
},
{
name: 'Pashto, Pushto',
id: 'ps',
},
{
name: 'Persian',
id: 'fa',
},
{
name: 'Polish',
id: 'pl',
name: 'język polski (pl)',
},
{
name: 'Portuguese',
id: 'pt',
},
{
name: 'Punjabi',
id: 'pa',
},
{
name: 'Quechua',
id: 'qu',
},
{
name: 'Romanian',
id: 'ro',
},
{
name: 'Romansh',
id: 'rm',
},
{
name: 'Rundi',
id: 'rn',
},
{
name: 'Russian',
id: 'ru',
},
{
name: 'Northern Sami',
id: 'se',
},
{
name: 'Samoan',
id: 'sm',
},
{
name: 'Sango',
id: 'sg',
},
{
name: 'Sanskrit',
id: 'sa',
},
{
name: 'Sardinian',
id: 'sc',
},
{
name: 'Serbian',
id: 'sr',
},
{
name: 'Shona',
id: 'sn',
},
{
name: 'Sindhi',
id: 'sd',
},
{
name: 'Sinhala',
id: 'si',
},
{
name: 'Slovak',
id: 'sk',
},
{
name: 'Slovenian',
id: 'sl',
},
{
name: 'Somali',
id: 'so',
},
{
name: 'Southern Sotho',
id: 'st',
},
{
name: 'Spanish',
id: 'es',
},
{
name: 'Sundanese',
id: 'su',
},
{
name: 'Swahili',
id: 'sw',
},
{
name: 'Swati',
id: 'ss',
},
{
name: 'Swedish',
id: 'sv',
},
{
name: 'Tagalog',
id: 'tl',
},
{
name: 'Tahitian',
id: 'ty',
},
{
name: 'Tajik',
id: 'tg',
},
{
name: 'Tamil',
id: 'ta',
},
{
name: 'Tatar',
id: 'tt',
},
{
name: 'Telugu',
id: 'te',
},
{
name: 'Thai',
id: 'th',
},
{
name: 'Tibetan',
id: 'bo',
},
{
name: 'Tigrinya',
id: 'ti',
},
{
name: 'Tonga',
id: 'to',
},
{
name: 'Tsonga',
id: 'ts',
},
{
name: 'Tswana',
id: 'tn',
},
{
name: 'Turkish',
id: 'tr',
},
{
name: 'Turkmen',
id: 'tk',
},
{
name: 'Twi',
id: 'tw',
},
{
name: 'Uighur',
id: 'ug',
},
{
name: 'Ukrainian',
id: 'uk',
},
{
name: 'Urdu',
id: 'ur',
},
{
name: 'Uzbek',
id: 'uz',
},
{
name: 'Venda',
id: 've',
},
{
name: 'Vietnamese',
id: 'vi',
},
{
name: 'Volapük',
id: 'vo',
},
{
name: 'Walloon',
id: 'wa',
},
{
name: 'Welsh',
id: 'cy',
},
{
name: 'Wolof',
id: 'wo',
},
{
name: 'Xhosa',
id: 'xh',
},
{
name: 'Yiddish',
id: 'yi',
},
{
name: 'Yoruba',
id: 'yo',
},
{
name: 'Zhuang, Chuang',
id: 'za',
},
{
name: 'Zulu',
id: 'zu',
},
];
export const getLanguageName = (languageCode = '') => {
const languageObj =
languages.find(language => language.id === languageCode) || {};
return languageObj.name || '';
};
export default languages;

View File

@@ -1,5 +1,5 @@
import defaultFilters from './index';
import { filterAttributeGroups } from './index';
import defaultFilters from '../index';
import { filterAttributeGroups } from '../index';
describe('#filterItems', () => {
it('Matches the correct filterItems', () => {

View File

@@ -0,0 +1,10 @@
import { getLanguageName } from '../languages';
describe('#getLanguageName', () => {
it('Returns correct language name', () => {
expect(getLanguageName('es')).toEqual('Spanish');
expect(getLanguageName()).toEqual('');
expect(getLanguageName('rrr')).toEqual('');
expect(getLanguageName('')).toEqual('');
});
});

View File

@@ -6,6 +6,7 @@
"COPY_SUCCESSFUL": "Copied to clipboard successfully",
"COMPANY": "Company",
"LOCATION": "Location",
"BROWSER_LANGUAGE": "Browser Language",
"CONVERSATION_TITLE": "Conversation Details",
"VIEW_PROFILE": "View Profile",
"BROWSER": "Browser",

View File

@@ -6,6 +6,12 @@
:value="initiatedAt.timestamp"
class="conversation--attribute"
/>
<contact-details-item
v-if="browserLanguage"
:title="$t('CONTACT_PANEL.BROWSER_LANGUAGE')"
:value="browserLanguage"
class="conversation--attribute"
/>
<contact-details-item
v-if="referer"
:title="$t('CONTACT_PANEL.INITIATED_FROM')"
@@ -44,6 +50,7 @@
</template>
<script>
import { getLanguageName } from '../../../components/widgets/conversation/advancedFilterItems/languages';
import ContactDetailsItem from './ContactDetailsItem.vue';
import CustomAttributes from './customAttributes/CustomAttributes.vue';
import CustomAttributeSelector from './customAttributes/CustomAttributeSelector.vue';
@@ -103,6 +110,9 @@ export default {
} = this.conversationAttributes.browser;
return `${browserName} ${browserVersion}`;
},
browserLanguage() {
return getLanguageName(this.conversationAttributes.browser_language);
},
platformName() {
if (!this.conversationAttributes.browser) {
return '';