public LocalizationProvider(AbstractTranslator translator ) { this.translator = translator; translator.translationResult += provideTranslation; timer = new Timer( 10, 1 ); timer.timerComplete += sendTranslationRequest; pendingTranslations = new JsObject<JsArray<Node>>(); }
private void sendTranslationRequest(Timer timer) { var domainLabels = new JsObject<JsArray<JsString>>(); var keyValuePair = new JsRegExp(@"\[(labels|messages|reference)\.(\w+)\]"); JsRegExpResult result; JsString domain; JsString key; //The translation translator works on domains, so we need to break up the available items we have and make appropriate requests to the translator foreach (JsString expression in pendingTranslations) { result = expression.match(keyValuePair); domain = result[1]; key = result[ 2 ]; if (domainLabels[domain] == null ) { domainLabels[domain] = new JsArray<JsString>(); } domainLabels[domain].push( key ); } foreach ( JsString domainEntry in domainLabels ) { translator.translate(domainEntry, domainLabels[domainEntry]); } }