Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用mongodb实现Java Spring的国际化_Java_Spring_Mongodb_Internationalization - Fatal编程技术网

使用mongodb实现Java Spring的国际化

使用mongodb实现Java Spring的国际化,java,spring,mongodb,internationalization,Java,Spring,Mongodb,Internationalization,我在JavaSpring中有一个后端,有一个mongo数据库,还有一个存储旅游(roadtrips)的集合。由于该应用程序应该由游客使用,我们希望引入国际化。基本巡更对象如下所示 { "_id" : ObjectId("5c826e272173e100044496b1"), "startingDate" : NumberLong(1552160940), "start" : {}, "end" : {}, "title" : "Dummy tour",

我在JavaSpring中有一个后端,有一个mongo数据库,还有一个存储旅游(roadtrips)的集合。由于该应用程序应该由游客使用,我们希望引入国际化。基本巡更对象如下所示

{
    "_id" : ObjectId("5c826e272173e100044496b1"),
    "startingDate" : NumberLong(1552160940),
    "start" : {},
    "end" : {},
    "title" : "Dummy tour",
    "duration" : NumberLong(25653),
    "transportationType" : "DRIVING",
    "polylineDecoded" : [ ],
    "waypointList" : [ ],
    "ownerIds" : [ ]
}
我们希望根据用户的区域设置添加标题。构建旅游班的最佳方式是什么? 这类事情有最佳实践吗

编辑:到目前为止,这是最普遍的方法,但我担心如果添加太多语言,它会使tour对象膨胀

{
    "_id" : ObjectId("5c826e272173e100044496b1"),
    "startingDate" : NumberLong(1552160940),
    "start" : {},
    "end" : {},
    "title" : {
        "en" : "Tour",
        "gr" : "Ξενάγηση"
    },
    "duration" : NumberLong(25653),
    "transportationType" : "DRIVING",
    "polylineDecoded" : [ ],
    "waypointList" : [ ],
    "ownerIds" : [ ]
}

为什么不使用一个键来替换硬编码的值本身呢?也就是说,
title
的唯一值类似于
strings.title
。然后将其存储在国际化属性资源中,并检索给定用户区域设置的值。国际化通常就是这样运作的。@Mena你能给出一个例子来回答吗?我不太明白你的确切意思。你可以找一个关于Java国际化的快速教程(可能很旧,但一般原则应该适用)。本质上:您只在巡更集合中保留与模型相关的数据,即巡更数据,而不是公共字符串的所有翻译。这些值作为键值保存在其他地方,当您需要显示具有给定区域设置的值时,您知道该值的键并可以检索正确的值。非常感谢@MenaNo链接带来的问题。请看一下一般原则,但我不建议将所有内容都按字面理解。在我看来,一般的想法是,通过请求给定键(例如
tour.title
)和语言(例如
el
)或完整区域设置的翻译值,将翻译与业务对象分开,只在需要的层中进行翻译(通常在前端,但不总是如此)(例如,
el_GR
)等等。为什么不使用一个键来替换硬编码值本身呢?也就是说,
title
的唯一值看起来像
strings.title
。然后,您可以将其存储在国际化属性资源中,并根据用户的区域设置检索值。这与International个性化正常工作。@Mena您能在回答中给出一个例子吗?我不太明白您的确切意思。您可以查看例如Java国际化的快速教程(可能很旧,但一般原则应该适用)。本质上:您只在巡更集合中保留与模型相关的数据,即巡更上的数据,而不是公共字符串的所有翻译。这些数据作为键值保存在其他地方,当您需要显示具有给定区域设置的值时,您知道该值的键并可以检索正确的值。非常感谢链接@MenaNo问题。请看一下一般原则,但我不建议逐字逐句。在我看来,一般的想法是,通过请求给定键的翻译值,将翻译与业务对象分开,并且只在需要的层中进行翻译(通常在前端,但不总是如此)(例如
tour.title
)和语言(例如
el
)或完整地区(例如
el\u GR
)等。