surveyjs / survey-library

Free JavaScript form builder library with integration for React, Angular, Vue, jQuery, and Knockout.
https://surveyjs.io/form-library
MIT License
4.12k stars 802 forks source link

Multi Language Translation doesn't works in English #7760

Closed naddang closed 8 months ago

naddang commented 8 months ago

Are you requesting a feature, reporting a bug or asking a question?

If JSON Default Language is not English, translated English language is shown as uncompletely.

Test code

My JSON

{
 "locale": "en",
 "title": {
  "default": "온라인 교육환경에 대한 만족도 조사",
  "ja": "オンライン教育環境に対する満足度調査",
  "en": "Survey on satisfaction with the online education environment",
  "fr": "Sondage sur la satisfaction à l’égard de l’environnement de l’éducation en ligne"
 },
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "radiogroup",
     "name": "q1",
     "title": {
      "default": "온라인 교육의 전반적인 만족도는 어느 정도입니까?",
      "ja": "オンライン教育に対する全体的な満足度はどれくらいですか?",
      "en": "What is your overall satisfaction with online education?",
      "fr": "Quelle est votre satisfaction globale à l’égard de l’éducation en ligne ?"
     },
     "isRequired": true,
     "choices": [
      {
       "value": "매우 만족",
       "text": {
        "ja": "非常に満足",
        "en": "Very satisfied",
        "fr": "Très satisfait(e)"
       }
      },
      {
       "value": "만족",
       "text": {
        "ja": "満足",
        "en": "satisfaction",
        "fr": "satisfaction"
       }
      },
      {
       "value": "보통",
       "text": {
        "ja": "通常は",
        "en": "usually",
        "fr": "habituellement"
       }
      },
      {
       "value": "불만족",
       "text": {
        "ja": "不興",
        "en": "displeasure",
        "fr": "mécontentement"
       }
      },
      {
       "value": "매우 불만족",
       "text": {
        "ja": "非常に不満",
        "en": "Very dissatisfied",
        "fr": "Très insatisfait(e)"
       }
      }
     ]
    }
   ]
  }
 ]
}

js option setting

survey.locale = 'en';

result -> image

Another languages are completely works.

image image

I think Line 56615 in survey.core.js is the culprit.

set: function (value) {
            if (value === _surveyStrings__WEBPACK_IMPORTED_MODULE_8__["surveyLocalization"].defaultLocale && !_surveyStrings__WEBPACK_IMPORTED_MODULE_8__["surveyLocalization"].currentLocale) {
                value = "";
            }
            this.setPropertyValue("locale", value);
        }

It cause that if i set locale as 'en', function 'set' sets ''.

Specify your

naddang commented 8 months ago

I find Survey.surveyLocalization.defaultLocale