#json #angular
#json #angular
Вопрос:
У меня есть файл .properties, содержащий следующий код:
MultiLanguageView.language1=Turn off/on first language entries
MultiLanguageView.language2=Turn off/on second language entries
MultiLanguageView.toggle=Display works only/Display all entries
SearchView.headwords=Headwords
SearchView.headwords.tooltip=Headwords search
SearchView.entry=Headword
SearchView.entry.tooltip=Search in Italian headwords and in their French and German translations
SearchView.subentry=Subentry
SearchView.subentry.tooltip=Search in Italian subentries and in their French and German translations
SearchView.fullText=Full text
SearchView.fullText.tooltip=Full text search
SearchView.japentry=Headword (alphabetic)
SearchView.japentry.tooltip=Headwords search with a latin keyboard
SearchView.japentry.jap=Headword (u6F22u5B57)
SearchView.japentry.jap.tooltip=Headwords search with ideograms
SearchView.japfullText=Full text (alphabetic)
SearchView.japfullText.tooltip=Full text search with a latin keyboard
SearchView.japfullText.jap=Full text (u6F22u5B57)
SearchView.japfullText.jap.tooltip=Full text search with ideograms
SearchView.cinentry=Headword (alphabetic)
SearchView.cinentry.tooltip=Headwords search with a latin keyboard
SearchView.cinentry.cin=Headword (u4e2du6587u8bcd)
SearchView.cinentry.cin.tooltip=Headwords search with ideograms
SearchView.cinfullText=Full text (alphabetic)
SearchView.cinfullText.tooltip=Full text search with a latin keyboard
SearchView.cinfullText.cin=Full text<br>(u4e2du6587u8bcd)
SearchView.cinfullText.cin.tooltip=Full text search with ideograms
AdvancedSearchFieldSearchAction.HEADWORD_ADVANCED.results=Headwords: {2} additional entries found for "{1}"
AdvancedSearchFieldSearchAction.HEADWORD_ADVANCED.noresults=Headwords: no additional entries found for "{1}"
Мне нужно было преобразовать это во вложенные объекты JSON, чтобы использовать ngx-translate в Angular 7. пожалуйста
Ответ №1:
Вы можете создать свой пользовательский загрузчик с помощью TranslateLoader в ngx-translate, единственное, что вам нужно сделать, это проанализировать файл свойств.
Я не знаю этот тип файла, но, возможно, есть библиотека, которая понимает синтаксис этого файла или создает свой собственный.
Комментарии:
1. да, я могу использовать customLoader, но переводы должны быть помещены в json-файл, который будет импортирован вместе с загрузчиком. правильно? Мне нужно знать, как мой файл свойств преобразуется в объект json.
2. Если вы создаете свой собственный загрузчик, вам не нужно конвертировать его в JSON для загрузки. Это действительно так, как вы хотите.
3. как я понял, простое изменение формата файла, как показано ниже, в загрузчике не помогает в работе. Если вы знаете, как это сделать, пожалуйста, дайте мне знать.
constructor( protected _http: HttpClient, protected _prefix: string = 'i18n', protected _suffix: string = '.properties' ) { } public getTranslation(lang: string): Observable<any> { return this._http .get(
${this._prefix}/${lang} ${this._suffix}, { responseType: 'text' }) .pipe(map((contents: string) => this.parse(contents))); }