Есть несколько решений для достижения этой цели. Я рекомендую вам базовое решение,
Вот интерфейс для языковой службы (опционально, если вы используете Dependency Injection):
blockquote>public interface ILanguageService { string GetString(string text); void ChangeLanguage(bool isALang); bool IsALanguage(); }
Вы можете создать службу для локализации:
namespace Service.Language { public sealed class LanguageService : ILanguageService { List<LanguageRow> LanguageList; private bool IsFirstLang; public LanguageService() { LanguageList = JsonHelper.ReadJSON<List<LanguageRow>>("Service.Language.MultiLanguage.json", typeof(LanguageService)); IsFirstLang = true; } public void ChangeLanguage(bool IsFirstLang) { IsFirstLang = !IsFirstLang; } public bool IsALangueage() { return IsFirstLang; } public string GetString(string text) { string result; try { var row = LanguageList.FirstOrDefault(i => i.Code.Equals(text)); result = IsFirstLang? row.Values[0] : row.Values[1]; } catch { result = text; } return result; } } }
Вот модель для сериализации для json:
public class LanguageRow { public LanguageRow() { Values = new List<string>(); } public string Code { get; set; } public List<string> Values { get; set; } }
Наконец, вот файл json: (EN-FR)
< blockquote>[ { "Code": "VitalSignsViewPage_Title", "Values": [ "Page Title", "Titre de la page" ] }, { "Code": "VitalSignsViewPage_SubTitle", "Values": [ "Sub Title", "Sous-titre" ] }, { "Code": "VitalSignsViewPage_SubSubTitle", "Values": [ "Sub Sub Title", "Sous sous-titre" ] } ]
Вы можете получить доступ к таким переводам, как:
blockquote>ILanguageService _langService = new LangService() _langService.GetString(AppResources.VitalSignsViewPage_Title);
Я предполагаю, что исключение выдается на на последней строке
lstOutput.Text = Bill * (1 + if (Tip<1,Tip,Tip/100))
Вы использовали "если", который используется в, если... затем оператор, но я поставил Вас, означал iif, который является функцией
lstOutput.Text = Bill * (1 + IIf (Tip<1,Tip,Tip/100))
просто добавьте, что один дополнительный "i" и Вы должны быть в порядке
Если Вы используете 2008? или позже, если в порядке
Dim tipT As New TextBox
Dim Bill As Decimal = 9D
Dim tip As Decimal = 20
tipT.Text = Convert.ToString(Bill * If(tip >= 1, tip / 100, tip))