Как камера позволяет пользователю выбирать язык в приложении xamarin android [duplicate]

Вместо input.nextLine() используйте input.next(), что должно решить проблему.

Измененный код:

public static Scanner input = new Scanner(System.in);

public static void main(String[] args)
{
    System.out.print("Insert a number: ");
    int number = input.nextInt();
    System.out.print("Text1: ");
    String text1 = input.next();
    System.out.print("Text2: ");
    String text2 = input.next();
}
1
задан Stephan Ronald 7 October 2015 в 12:10
поделиться

4 ответа

Вы можете установить культуру по умолчанию со следующим свойством:

CultureInfo.DefaultThreadCurrentCulture

Но это не будет работать в Android. Итак, для Android вам нужно настроить культуру каждый раз, когда действие возобновляется. Вы можете добавить базовую активность, например:

internal class MyBaseActivity : Activity
{
    protected override void OnResume ()
    {
        base.OnResume ();

        // Here you would read it from where ever.
        var userSelectedCulture = new CultureInfo ("fr-FR");

        Thread.CurrentThread.CurrentCulture = userSelectedCulture;
    }
}

Найдено на форуме xamarin: https://forums.xamarin.com/discussion/9764/how-to-set-a-global -cultureinfo-для-ан-приложение

1
ответ дан Joehl 23 August 2018 в 20:53
поделиться

Я работаю с приложением Xamarin Forms.

Настройка Культуры в классе App сделала для меня трюк.

using System.Globalization;
using System.Threading;


private void SetCultureToUSEnglish()
{
    CultureInfo englishUSCulture = new CultureInfo("en-US");
    CultureInfo.DefaultThreadCurrentCulture = englishUSCulture;
}
1
ответ дан 7vikram7 23 August 2018 в 20:53
поделиться

Вы должны установить текущую культуру в своем приложении. Локализация работает очень хорошо. Вот как я это сделал:

public void SetLocale(CultureInfo ci)
    {
        Thread.CurrentThread.CurrentCulture = ci;
        Thread.CurrentThread.CurrentUICulture = ci;

    }

И здесь вы получаете культуру от устройства:

public CultureInfo GetCurrentCultureInfo()
    {
        var netLanguage = "en";
        if (NSLocale.PreferredLanguages.Length > 0)
        {
            var pref = NSLocale.PreferredLanguages[0];

            netLanguage = iOSToDotnetLanguage(pref);
        }

        // this gets called a lot - try/catch can be expensive so consider caching or something
        CultureInfo ci = null;
        try
        {
            ci = new CultureInfo(netLanguage);
        }
        catch (CultureNotFoundException e1)
        {
        }
     }
private string iOSToDotnetLanguage(string iOSLanguage)
    {
     // Testing special cases..
    }

Если вы используете проект PCL, используйте абстракцию. Использовать интерфейс в PCL и его реализацию в собственном проекте.

Вы можете увидеть больше здесь: https://docs.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals / локализации

0
ответ дан Dan 23 August 2018 в 20:53
поделиться

Я пытаюсь использовать подход Joehl, но это не сработало для меня. Я использовал этот подход

        string cultureName = "es-US";
        var locale = new Java.Util.Locale(cultureName);
        Java.Util.Locale.Default = locale;

        var config = new Android.Content.Res.Configuration { Locale = locale };
        BaseContext.Resources.UpdateConfiguration(config, BaseContext.Resources.DisplayMetrics);

Также создал базовую активность

Найти ответ здесь:

изменение cultinfo на android с использованием xamarin и c #

4
ответ дан foluis 23 August 2018 в 20:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: