2015-01-22 6 views

ответ

0

То, что я сделал, это объявить переменную при помощи Javascript

<script type="text/javascript">  
    var UmbracoDicKeyValue = '<%= kraftvaerk.umbraco.Translations.translate("Umbraco_Dic_Key", lang) %>'; 
</script> 

А для установки значения переменной lang со стороны сервера.

protected string lang = (!String.IsNullOrEmpty(umbraco.library.Session("lang")) ? umbraco.library.Session("lang") : "en-GB"); 
umbraco.library.setSession("lang", lang); 

Теперь используйте переменную UmbracoDicKeyValue в javascript-коде.

1

Насколько я знаю, вы не можете сделать это из коробки - на самом деле не пробовал, хотя.

Я бы сначала создать простую службу отдыха в моем веб-сайте, который возвращает элемент словаря Umbraco с помощью параметра строки запроса в качестве значения псевдонима

var alias = HttpContext.Current.Request.QueryString["alias"] 
if(alias != null) 
{ 
    var dictionaryItem = umbraco.GetDictionaryItem(alias) 
    ... 
} 

Затем вызовите свой собственный веб-сервиса с помощью JavaScript для получения значения

2

Нет, вы не можете сделать это из коробки.

Мне пришлось сделать это несколько раз, и наилучшим образом я придумал, чтобы напечатать все словарные предметы как объект при загрузке страницы (в <head> или что-то в этом роде). Проклятие только для текущего языка.

Так в источнике у вас есть

<script> 
    var dic = {"quantity":"Quantity","totalPrice":"Total price","securePayment":"Secure payment"}; 
</script> 

А затем получить как

window.dic["quantity"] 
+1

Thumbs up для обеспечения лучшей идеи, чем я предложил. Это имеет большее значение, учитывая, как сопоставление от псевдонима к элементу, вероятно, будет выполняться много раз в каждом представлении, и в этих случаях лучше будет обеспечивать лучшую производительность. Предполагая, что ваш словарь не массивный: D – Scherling

+0

Да, это даст намного лучшую производительность таким образом. Я на самом деле также кэширую этот список для каждого языка :) –

 Смежные вопросы

  • Нет связанных вопросов^_^