Меняется ли название "/ Volumes" в зависимости от языка системы, и если да, то как это адаптировать? - PullRequest
0 голосов
/ 14 мая 2019

Я использую этот код, чтобы проверить, работает ли клиент с DMG / Volume, а также показать предупреждение и выйти.

private void IsRunningFromDMG()
{
        var currentPath = NSBundle.MainBundle.BundlePath;

        if (currentPath.StartsWith("/Volumes", StringComparison.Ordinal))
        {
            using (var alert = new NSAlert
            {
                MessageText = "Warning",
                InformativeText = "You cannot run this application from DMG, drag move to the " +
                    "\"/Applications\" folder"
            })

            {
                alert.RunModal();
                NSApplication.SharedApplication.Terminate(null);
            }
        }
}    

Это нормально, если системный язык установлен на английский. Я сомневаюсь, если / Тома реагирует на локализацию в таком случае, как это сделать?

Должна ли быть системная константа, которая позаботится об этом? Если это так, пожалуйста, помогите мне узнать, что это такое.

1 Ответ

1 голос
/ 14 мая 2019

Пути файловой системы не меняются в зависимости от локализации, они локализованы для «отображения», хотя (т. Е. Изображения, музыка и т. Д.) Будут локализованы в Finder для отображения пользователю, но путь к файловой системе по-прежнему /User/xxx/Pictures,и т.д ...)

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

Отображаемые имена не влияют на фактическое имя файла в файловой системе .Код, который осуществляет программный доступ к файлу или каталогу, должен указывать фактическое имя элемента при открытии или манипулировании элементом с использованием интерфейсов файловой системы.Единственное время, когда ваше приложение должно когда-либо использовать отображаемые имена, - это отображение имени файла или каталога пользователю.Вы можете получить отображаемое имя для любого файла или каталога, используя displayNameAtPath: метод NSFileManager.

т.е.

var urls = NSFileManager.DefaultManager.GetUrls(NSSearchPathDirectory.ApplicationsDirectory, NSSearchPathDomain.System);
var applicationDisplayName = NSFileManager.DefaultManager.DisplayName(urls[0].AbsoluteString);

Примечание: Вы должны использовать NSSearchPathDirectory.AllApplicationsDirectory в NSSearchPathDomain.All домен для получения действительного списка URL-адресов «Приложения», где может / должно быть расположено ваше приложение, вместо жесткого кодирования его в местоположение приложения «Система».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...