1

사용자 정의 입력을 위해 localization을 빌드하려고합니다. 예 : 사용자는 축구와 같은 카테고리를 여러 언어로 정의 할 수 있습니다. 우리는 testdata로를 저장하는 YAML를 사용사용자 정의 입력에 대한 국제화

@Entity 
public class L18n { 

    @Id 
    @Constraints.Required 
    @Formats.NonEmpty 
    public Integer id; 

    public String key; 

    public String locale; 

    @Column(columnDefinition = "TEXT") 
    public String text; 

} 

:

@ManyToMany  
    @MapKeyColumn(name = "locale", insertable = false, updatable = false)  
    public Map<String, L18n> titles; 

내가 이런 식으로 지역화 된 문자열을 저장하고 싶습니다 :

모델 개체는이 같은 신청 뭔가를 할 수 :

category: 

     - !!models.Category 
       ... 
       titles: 
        - !!models.L18n 
         key: soccer 


    l18n: 

     - !!models.L18n 
       key: soccer 
       locale: de-CH 
       text: fdfdfsee 

     - !!models.L18n 
       key: soccer 
       locale: fr-CH 
       text: dlfkjsdlfj 

이 솔루션을 사용하면 getti NG이 오류 :

[error] Caused by: org.yaml.snakeyaml.error.YAMLException: No suitable constructor with 1 arguments found for interface java.util.Map 
    [error]  at org.yaml.snakeyaml.constructor.Constructor$ConstructSequence.construct(Constructor.java:574) 
    [error]  at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:182) 
    [error]  at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:296) 
    [error]  ... 65 more 

답변

0

나는 문제는 당신이지도로 제목을 정의한 생각하지만 그것을 정의 할 YAML 매핑 구문을 사용하지 마십시오. YAML Collections

이 여기되는 언어의를 사용하여 제목에 대한 구문이 예제와 유사해야한다고 생각 : 당신이 당신의 .yml 파일의 형식을 변경하는 경우 YAML Dictionary Example

titles: 
    soccer: - !!models.L18n 
       key: soccer 
       locale: de-CH 
       text: fdfdfsee 
    football: - !!models.L18n 
       ... 

가 L18n 인스턴스를 먼저 정의 및 참조를 사용되도록, YAML 사양은 Alias Nodes입니다. 제목을 훨씬 간소화 된 것으로 만들 수 있습니다.

l18n: 

    - &soccerDE !!models.L18n 
      key: soccer 
      locale: de-CH 
      text: fdfdfsee 

    - &soccerFR !!models.L18n 
      key: soccer 
      locale: fr-CH 
      text: dlfkjsdlfj 

category: 

    - !!models.Category 
      ... 
      titles: 
       soccerDE: *soccerDE 
       soccerFR: *soccerFR 
+0

안녕하세요, 답변 해 주셔서 감사합니다. 어떤 종류의 해결 방법을 구현했지만 시간이 지났을 때 늦게 체크 아웃 할 것입니다. – myborobudur

+0

문제 없습니다. 필자는 결코 yaml 전문가가 아닙니다. 효과적으로 작성하거나 디버깅하는 것보다 IMHO, 도움이되지 않는 오류 메시지 및 구문을 저주하는 데 더 많은 시간을 할애하지만, 몇 주 전에 비슷한 작업을했습니다. – 2manyprojects

관련 문제