Хорошо, я создал общий веб-сервис, который позволяет мне захватывать ресурсы и возвращать их в словарь (вероятно, лучший способ преобразования в словарь) ...
<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=False, XmlSerializeString:=True)> _
Public Function GetResources(ByVal resourceFileName As String, ByVal culture As String) As Dictionary(Of String, String)
Dim reader As New System.Resources.ResXResourceReader(String.Format(Server.MapPath("/App_GlobalResources/{0}.{1}.resx"), resourceFileName, culture))
If reader IsNot Nothing Then
Dim d As New Dictionary(Of String, String)
Dim enumerator As System.Collections.IDictionaryEnumerator = reader.GetEnumerator()
While enumerator.MoveNext
d.Add(enumerator.Key, enumerator.Value)
End While
Return d
End If
Return Nothing
End Function
Затем я могу получить этот результат json и присвоить его локальной переменной:
// load resources
$.ajax({
type: "POST",
url: "mapping.asmx/GetResources",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: '{"resourceFileName":"common","culture":"en-CA"}',
cache: true,
async: false,
success: function(data) {
localizations = data.d;
}
});
Затем вы можете получить значение из локальной переменной следующим образом:
localizations.Key1
Единственная загвоздка в том, что если вы хотите назначить локализации глобальной переменной, вы должны запустить ее async = false, иначе у вас не будет доступных переводов, когда они вам понадобятся. Я пытаюсь использовать «получить», чтобы я мог кэшировать ответ, но это не работает для меня. Смотрите этот вопрос:
Невозможно вернуть словарь (из строки, строки) через веб-запрос GET ajax, работает с POST