2016-09-02 5 views
0

У меня есть приложение UWP, в котором есть набор текстовых файлов, по одному для каждого поддерживаемого нами языка. Я хочу прочитать содержимое одного текстового файла на основе языка, на который установлена ​​система. Например позволяет сказать, что текстовый файл называется MyTextFile.txt и 2 языка Я поддержки являются английский и французский, я бы следующие 2 файла в моем пакете:Каков наилучший способ загрузки другого текстового файла на разных языках для приложения UWP?

fr-fr\MyTextFile.txt

en-us\MyTextFile.txt

Если система настроена на французский язык, я хочу загрузить и прочитать французский текстовый файл и отобразить его содержимое. Мое текущее решение работает только на моей машине dev, когда я развертываю свое приложение на другой машине, оно работает только в том случае, если ОС является английским. Если я устанавливаю ОС на французский язык и устанавливаю свое приложение, он не загружает текстовый файл. Это то, что я делаю:

1) У меня есть магазин текстовых файлов под [имя_приложения] \ Files [язык] \ MyTextFile.txt 2) У меня есть реквизит файл, который загружает файлы, он содержит это:

<PropertyGroup> 
    <FileDir>$(SolutionDir)App\[appname]\Files\</EulaDir> 
    </PropertyGroup> 
    <ItemGroup>  
    <Content Include="$(FileDir)\en-us\MyTextFile.txt"> 
     <Link>en-us\MyTextFile.txt</Link> 
    </Content> 
    <Content Include="$(FileDir)\fr-fr\MyTextFile.txt"> 
     <Link>fr-fr\MyTextFile.txt</Link> 
    </Content> 
    </ItemGroup> 
</Project> 

3) Мой код (который работает на английском языке) загружает файл, как это:

var rc = ResourceManager.Current.MainResourceMap.GetSubtree("Files").GetValue("MyTextFile.txt", ResourceContext.GetForCurrentView()); 

var lang = rc.Qualifiers.FirstOrDefault(q => q.QualifierName == "Language").QualifierValue; 

// Get the file 
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///" + lang + "/" + "MyTextFile.txt")); 

// Read the contents of the file 
UI.Text = await FileIO.ReadTextAsync(file, UnicodeEncoding.Utf8); 

Возможно есть лучший способ для загрузки этого текстового файла на другом языке? Он должен быть текстовый файл, поскольку он содержит юридический текст и не может быть строка в файле RESW

благодаря

Джордж

ответ

0

Вам не нужно указать язык вручную, просто прочитайте файл как обычно.

// Get the file 
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///MyTextFile.txt")); 

// Read the contents of the file 
UI.Text = await FileIO.ReadTextAsync(file, UnicodeEncoding.Utf8); 
+0

Да, это сработало отлично - спасибо! Так просто – user6115111

0

Возможно есть лучший способ для загрузки этого текстового файла на другом языке?

Предлагается использовать ресурсы приложений для разделения локализованного контента на код приложения. Ресурсы позволяют локализовать приложения на несколько языков, настраивать их для различных DPI устройств и форм-факторов и настраивать для определенных типов пользователей.

Для получения дополнительной информации о localization вашего приложения, вы можете обратиться к Globalization and localization, и здесь является официальным Application resources and localization sample, в данном примере вы можете увидеть, что предлагается разделить свои ресурсы, такие как строки и файлы из вашего приложения кода, поэтому вы можете самостоятельно поддерживать и изменять свои ресурсы.

+0

В моем случае мне нужен отдельный файл, который должен был быть локализован отдельно нашей юридической командой. Они не локализуются, как другие строки. Решение выше отлично работало – user6115111

 Смежные вопросы

  • Нет связанных вопросов^_^