Python sys.path модификация, не работающая

1118 Я не имею в виду быть носителем плохих новостей, но то, что вы предлагаете, на самом деле плохая идея. Я работаю в компании, которая очень серьезно относится к i18n, и мы обнаружили (мучительно), что нельзя просто вставить слова в подобные предложения, поскольку они часто не имеют смысла.

То, что мы делаем, это просто отключаем текст ошибки от битов переменных, чтобы избежать этих проблем. Например, мы сгенерируем ошибку:

XYZ-E-1002 Frobozz not configured for multiple zorkmids (F22, 7).

А затем, в описании ошибки, вы просто утверждаете, что двумя значениями в скобках в конце были идентификатор Frobozz и число о зоркмидах, которые вы пытались нанести ему.

Это делает перевод i18n невероятно простой задачей, поскольку во время перевода у вас есть все необходимых вам языковых элементов, не беспокоясь о том, должны ли переменные биты быть единственными или множественными, сначала мужскими или женскими. Второе или третье склонение (что бы это ни значило на самом деле).

Команда переводчиков просто должна конвертировать "Frobozz not configured for multiple zorkmids", и это намного проще.


Для тех, кто хотел бы увидеть конкретный пример, у меня есть кое-что от наших переводчиков (с достаточным количеством материала, измененного для защиты виновных).

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

The {name} {object} is invalid

где {name} - имя объекта (клиенты, заказы и т. Д.), А {object} - сам тип объекта (таблица, файл, документ, хранимая процедура и т. д.).

Достаточно простой для английского языка, основного (возможно, единственного) языка разработчиков, но они столкнулись с проблемой при переводе на немецкий / швейцарско-немецкий.

Хотя «документ клиента» переведен правильно (в позиционном смысле) в Kundendokument, проблема заключалась в том, что строка формата имела пробел между двумя словами. Это было в основном потому, что разработчики пытались сделать предложение более естественным, но, к сожалению, только более естественным, исходя из своего ограниченного опыта.

Большая проблема была с «хранимой процедурой клиентов», которая стала gespeichertes Verfahren der Kunden, буквально «хранимой процедурой клиентов». В то время как немецкие клиенты, возможно, смирились с пробелом в Kunden dokument, нет никакого способа навязать gespeichertes Verfahren der Kunden на {name} {object} успешно.

Теперь вы можете сказать, что более умная строка формата исправила бы это, но есть несколько причин, по которым это было бы неправильно:

  • это очень простой пример, вероятно, будут другие сложный (я бы попробовал привести несколько примеров, но наши переводчики ясно дали понять, что у них есть более неотложная работа, чем подчиняться каждой моей прихоти).
  • Весь смысл строк формата заключается во внешнем переводе. Если сами строки формата специфичны для цели перевода, вы очень мало выиграли, извлекая текст.
  • разработчикам не нужно заботиться о форматных строках, подобных {possible-pre-adjectives} {possible-pre-owner} {object} {possible-post-adjectives} {possible-post-owner} {possible-postowner-adjectives}. Это работа команд перевода , так как они понимают нюансы.

Обратите внимание, что знакомство с разъединением обходит эту проблему как нельзя лучше:

The object specified by <parameter 1>, of type <parameter 2>, is invalid.
    Parameter 1 = {name}.
    Parameter 2 = {object}.
Der sache nannte <parameter 1>, dessen art <parameter 2> ist, ist falsch. 
    Parameter 1 = {name}.
    Parameter 2 = {object}.

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

9
задан lfaraone 22 June 2009 в 01:56
поделиться

3 ответа

Вам действительно нужно опубликовать код, чтобы мы могли вам помочь. Однако я могу сделать обоснованное предположение. Вы говорите, что если вы создадите новый список и назначите его sys.path, то он заработает. Я полагаю, вы имеете в виду, что делаете что-то вроде этого

sys.path = ["dir1", "dir2", ...]

Но если вы вставляете пути в начале, это не сработает. Я предполагаю, что вы используете такой метод вставки

sys.path.insert(0, ["dir1", "dir2"])

Если да, то это неверно.

18
ответ дан 4 December 2019 в 08:16
поделиться

Как вы «вставляете» дополнительные пути?

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

Пример обновления sys.path: http://www.johnny-lin.com/cdat_tips/tips_pylang/path .html

2
ответ дан 4 December 2019 в 08:16
поделиться

Пример обновления sys.path, взятый из здесь

import sys
sys.path.append("/home/me/mypy")

У меня это сработало.

4
ответ дан 4 December 2019 в 08:16
поделиться
Другие вопросы по тегам:

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