angular-translate链接不起作用

时间:2016-04-13 14:57:42

标签: angularjs angular-translate

我无法使用angular-translate建立与其他语言的链接。

var translations = {
  "en": {
    "HELLO": "hello",
    "ORANGE": "orange"
  },
  "fr": {
    "HELLO": "salut",
    "ORANGE": "@:en.ORANGE"
  },
};

请参阅以下plunker

显示" en.ORANGE"而不是" orange"。

供参考,请参阅documentation部分"快捷方式和链接"。

1 个答案:

答案 0 :(得分:2)

文档中的NAMESPACE指的是同一种语言中的var translations = { "en": { "HELLO": "hello", "ORANGE": "orange" }, "fr": { "HELLO": "salut", "ORANGE": "@:en.ORANGE" }, }; $translateProvider .translations('en', translations['en']) .translations('fr', translations['fr'])

在你的plunker中,你有这个:

.translations('fr', translations['fr'])

当您设置{ "HELLO": "salut", "ORANGE": "@:en.ORANGE" } 时,您将其作为法语的命名空间:

angular-translate

每当en.ORANGE搜索angular-translate时,它都会在上述对象中进行搜索。

尚未实现使用其他语言翻译的功能。看一下if (translation.substr(0, 2) === '@:') { getFallbackTranslation(langKey, translation.substr(2), interpolateParams, Interpolator) .then(deferred.resolve, deferred.reject); } else {...} 的源代码,就是这段代码:

@:

每当您拥有langKey个字符时,它都不会更改GREETING,这意味着它会在当前语言的翻译字典中搜索翻译。

目前你的plunker工作正常。我已经制作了fork,以表明它正在使用命名空间中的链接。查看class Destination { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @ORM\Column(name="name", type="string", length=255) * @Assert\NotBlank() */ private $name; /** * @var \Application\ModelBundle\Entity\Destination * * @ORM\ManyToOne(targetEntity="Application\ModelBundle\Entity\Destination", inversedBy="children") * @ORM\JoinColumn(name="parent", referencedColumnName="id", onDelete="cascade") */ private $parent; /** * @var \Application\ModelBundle\Entity\Destination * * @ORM\OneToMany(targetEntity="Application\ModelBundle\Entity\Destination", mappedBy="parent", cascade={"persist", "remove"}) */ private $children; /** * @var \Application\ModelBundle\Entity\User * * @ORM\ManyToOne(targetEntity="Application\ModelBundle\Entity\User", inversedBy="destinations") * @ORM\JoinColumn(name="user", referencedColumnName="id", onDelete="cascade") * @Assert\Type(type="Application\ModelBundle\Entity\User") */ private $user; /** * @var \Application\ModelBundle\Entity\Hotel * * ORM\OneToMany(targetEntity="Application\ModelBundle\Entity\Hotel", mappedBy="touristDestination", cascade={"persist"}) */ private $hotels; } 取值的位置。