我可以更改关于 JHipsters 'jhiTranslate' 的字符串数组的连接字符吗?

Can I change the concatenation character of the String-Array regarding JHipsters 'jhiTranslate'?

如果我使用字符串数组进行翻译,例如i18n/en/home.json 喜欢

     "primaryIntroduction": {
         "p1": [
             "Then Jenkins triggers a task to connect to the docker-server",
             " and calls some docker- and docker-compose commands to pull the new image",
             " and rebuilds and restarts the docker-container."
         ]
    }

jhipster 连接英文页面上的 <p>,如:

Then Jenkins triggers a task to connect to the docker-server, and calls some docker- and docker-compose commands to pull the new image, and rebuilds and restarts the docker-container.

(注意逗号)

输入一个新行而不用引号结束该行,json-文件将中断。 在我看来,如果没有换行符,较大的段落将难以阅读和翻译。

我可以改变句子在自己身上的连接方式吗?例如,在将数组的字符串放在一起时使用空格而不是逗号?在 Angular 系统中为该连接字符引入控制变量是否有用?

这很正常,您的键 p1 的值是一个数组,数组的字符串表示形式是逗号分隔的列表。有关详细信息,请参阅 https://github.com/ngx-translate/core/issues/339

这个问题在 ngx-translate 中通过支持 JSON5 format but unfortunately it has not been released yet and it seems the project is no longer actively maintained 得到了解决,因为最后一个版本是从 2018 年 11 月开始的。

因此您可以尝试使用管道建议来支持数组,请参阅 https://github.com/ngx-translate/core/issues/339#issuecomment-360450296

为了改变 jhipster 的 Angular 翻译串联(版本 6.10.5,参见 ),我添加了

import { TranslateDefaultParser } from '@ngx-translate/core';
import { Injectable } from '@angular/core';

@Injectable()
export class TranslateAppParser extends TranslateDefaultParser {
  getValue(target: any, key: string): any {
    target = super.getValue(target, key);
    if (target instanceof Array) {
      target = target.join(' ');
    }
    return target;
  }
}

src/main/webapp/app/shared/translateappparser.module.ts

并添加

import {MissingTranslationHandler, TranslateLoader, TranslateModule, TranslateParser} from '@ngx-translate/core';
import { TranslateAppParser } from 'app/shared/translateappparser.module';

export function createTranslateParser():any {
  return new TranslateAppParser();
}

以及parser: { provide: TranslateParser, useFactory: createTranslateParser },

TranslateModule.forRoot({
      loader: {
        provide: TranslateLoader,
        useFactory: translatePartialLoader,
        deps: [HttpClient],
      },
      parser: { provide: TranslateParser, useFactory: createTranslateParser },
      missingTranslationHandler: {
        provide: MissingTranslationHandler,
        useFactory: missingTranslationHandler,
        deps: [JhiConfigService],
      },

在文件中 src/main/webapp/app/core/core.module.ts

这正是 向我指出的 - 今天我在使用 jhipster --with-entities

进行 jhipster-Upgrade 时不得不再次找到代码片段