2016-06-26 2 views
0

Мы находимся в Швейцарии, но имеем клиентов в Германии и Австрии (это актуально, как мы увидим ниже).Applescript: десятичные знаки с разными языками

У нас есть приложение, в котором мы управляем Photoshop, используя Applescript, вызывающий различные скрипты Java. В некоторых случаях, мы сразу же записать возвращаемое значение JavaScript в переменной, как в

множества MYVAR к (сделать JavaScript «pathToMyScript.jsx) - псевдокод

Это работает очень хорошо, и у нас всегда есть строки.

проблема возникает, когда возвращаемая строка представляет собой число с десятичным знаком (например, «0.0184528»). Самыми простой множатся с 1, как и в

множества myNextVar в MYVAR * 1

Это работает хорошо, если язык является либо английским, либо швейцарским немецким. Но когда язык - немецкий (или французский). В этом случае Applescript больше не принимает вход и выдает ошибку.

И здесь, я смотрю за хорошую идею о решении ситуации ...

• изменение локали на соответствующем компьютере с помощью языка & предпочтение Область системы -> Дополнительно ... -> Общие - -> Сепараторы номеров не могут быть и речи; мы не можем ожидать, что наши пользователи позаботятся об этом.

• Временное изменение языкового стандарта с помощью элемента управления Applescript (вместе, если необходимо, с системными событиями) может быть вариантом. Но будет ли это работать немедленно, и для сценария, вызывающего изменение?

• Из-за использования системных событий для доступа к активным элементам приложение необходимо зарегистрировать с настройками безопасности доступности. Использование апплета проще, потому что этот апплет не меняется очень часто.

Это о том, что мне пришло в голову. Существуют ли другие подходы? Все, что возможно в Applescript (имея в виду, что решение должно работать независимо от языка.

Любые полезные идеи высоко ценится.

Спасибо заранее.

+0

Можете ли вы дать представление о том, почему это генерирует ошибку при установке на немецкий или французский язык? Я уверен, что есть другие, такие как я, которые не понимают причины ошибки. – ThrowBackDewd

+0

Причина, по которой я бы сказал, это то, что Apple слишком локализован Applescript и система. тем самым задерживая их, они потеряли его (al хотя это ничего нового; в прежние дни вы могли бы снести ваш PostScript-принтер из-за этой чрезмерной локализации) –

ответ

2

Я считаю, что ваш вопрос приходит из разных способов числа представлены в разных странах. Например, 1,029.42 vs 1.029,42 Поскольку вы возвращаете строку, отформатированную как «0.0184528», но затем вы пытаетесь принудить эту строку к числу, когда язык - это то, что ожидает формат будет отличаться, вы получите свою ошибку. Один подход может заключаться в том, чтобы изменить строку, когда это необходимо. Найдите «.» и замените на «,»

На моей системе «английский» это то, что я хотел бы сделать

on run 
    set myVar to (do JavaScript "pathToMyScript.jsx) as number-- where your script would return something like "0.0184528" 
end run 

Если бы я изменить на «французский», я считаю, что это дало бы ошибку, потому что не понял бы, что «0.0184528» была десятичной.

Интересно, что на моей «английской» системе, когда я сменил строку с «0.0184528» на «0,0184528» и отформатировал ее на число, она сработала.

На «English» Система

set myVar to "0.0184528" as number -- WORKS 
set myVar to "0,0184528" as number -- ALSO WORKS 

Когда я изменить свой язык «французский»

set myVar to "0.0184528" as number -- FAILS 
set myVar to "0,0184528" as number -- WORKS 

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

Краткое описание предлагаемого теста

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

Пример строки, которые могут быть возвращены из вашего JavaScript

"0,0184528"

"39204,09"

«39203032,0502

+0

Еще раз спасибо за вашу помощь. Я не доволен этим подходом, но если нет ничего лучше, мне придется вернуться к JavaScripts и изменить возвращаемую строку; там нет большого дела. Теперь, если я только знал адрес в Apple, где я мог бы отправить Durian ... –

+0

@MaxWyss - Вы также можете рассмотреть замену строки после получения результатов из JavaScript. – ThrowBackDewd

+0

. После некоторого рассмотрения вопросов, вида и использования меня заставило пойти на несколько упрощенное решение: поскольку числа фактически имеют только 2 значащие цифры после десятичного знака (например, проценты), я умножал результаты на 100 и округлял. При этом скрипты должны иметь дело с целыми числами, где проблема с десятичными знаками отсутствует. Тем не менее, большое спасибо за помощь. –

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