Формы Xamarin — Перевод элементов меню ящика во время выполнения

#c# #android #ios #xamarin #translate

Вопрос:

Я следую превосходному учебнику (Ссылка) по многоязычию в Xamarin.Формы

Все работает хорошо, но у меня есть одна проблема.

В своем приложении я использую панель навигации с помощью Syncfusion, поскольку я создаю пункты меню в виде списка, как показано ниже.

DrawerPage.xaml

 <ListView x:Name="listView"
                  SelectionMode="Single"
                  RowHeight="70"
                  ItemSelected="listView_ItemSelected"
                  SeparatorColor="Transparent">

                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <StackLayout Margin="32,10,0,0" 
                                         VerticalOptions="Center" >

                                <Grid RowDefinitions="1*, Auto">

                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="50"/>
                                        <ColumnDefinition Width="auto"/>
                                    </Grid.ColumnDefinitions>

                                    <Label Grid.Row="0"
                                           Grid.Column="0" 
                                           HorizontalTextAlignment="Start"
                                           HorizontalOptions="Start"
                                           FontSize="25"
                                           FontFamily="Material-Outlined"
                                           Style="{StaticResource IconLabelStyle}"
                                           Text="{Binding Icon}" />

                                    <Label Grid.Row="0"
                                           Grid.Column="1"
                                           HorizontalTextAlignment="Start"
                                           HorizontalOptions="Start"
                                           Margin="10,0,0,0" 
                                           Text="{Binding Name}" 
                                           FontSize="16"/>

                                </Grid>
                            </StackLayout>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
 

DrawerPage.cs

 private static string MAP = Lang.ResourceManager.GetString("Map");
private static string MAPICON = IconFont.ResourceManager.GetString("LocationOn");
private static string SETTINGS = Lang.ResourceManager.GetString("Settings");
private static string SETTINGSICON = IconFont.ResourceManager.GetString("Settings");

public partial class DrawerPage : ContentPage {
    drawerNavItems();
}

private void drawerNavItems()
{
    List<MenuItem> itemList = new List<MenuItem>();
    itemList.Add(new MenuItem { Icon = MAPICON, Name = MAP });
    itemList.Add(new MenuItem { Icon = SETTINGSICON, Name = SETTINGS });
    listView.ItemsSource = itemList;
 }
 

Проблема, с которой я сталкиваюсь, заключается в том, что я не понимаю, как я должен использовать вспомогательный класс в ссылке на учебник выше для перевода пунктов меню ящика.

В Xaml мы можем просто перевести строки следующим образом

 Text="{helpers:Translate Support}"
 

Но как мне сделать то же самое в коде, стоящем за этим ?

Комментарии:

1. разве это не то, что Lang.ResourceManager.GetString мы делаем?

2. Он не работает во время выполнения

3. это специально рассмотрено в учебнике, на который вы ссылаетесь — devblogs.microsoft.com/xamarin/…

4. Что ты имеешь в виду?

5. раздел, на который я напрямую ссылался — «Локализованный текст на C#» — показывает, как сделать именно то, о чем вы просите