Я разработал приложение, которое может поддерживать два языка. Более того, если мне нужно это приложение для поддержки многих языков. допустим десять языков, как выполнить это требование
Теперь я жестко связываю его с обоими языками, которые я использовал, а затем извлекаю его. Если я собираюсь сделать это для десяти языков, это звучит не очень хорошо, есть ли какой-нибудь разумный способ сделать это.
Например;
Я делаю с шаблоном MVVM в моей модели представления. Я использую свойство и делаю это простым способом.
public string GetPageTitle => AppResources.VitalSignsViewPage_Title;
и мой файл ресурсов. У меня есть два набора данных, если язык изменился, он будет использовать набор данных для записи, это то, что я делаю прямо сейчас, есть ли какой-либо правильный умный способ для этого на многих языках.
Если ваша проблема была завершена с ответом ниже, вы можете отметить мой ответ как завершенный.
да, жаль об этом





There is some solutions to achive this. I recommend to you basic solution ,
Here is an interface for Language Service (It is optionally , if you using Dependency Injection):
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)
[
{
"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" ]
}
]
You can access translations like :
ILanguageService _langService = new LangService()
_langService.GetString(AppResources.VitalSignsViewPage_Title);
мое решение решило вашу проблему?