Зависит от .
Иногда у вас нет выбора, кроме как использовать заполнители, например, для динамических данных. В этом случае использование заполнителей, особенно пронумерованных ({0}, {1}, ...), является не только хорошей идеей, но и наиболее приемлемой идеей с точки зрения интернационализации. Это позволяет изменить порядок предложений во время перевода, что вы определенно хотите поддержать.
Что касается нетехнических людей ... Ну, если вы используете профессионального поставщика перевода программного обеспечения, с ними проблем не возникнет, они просто привыкли переводить подобные строки. Если вы хотите назначить услуги только общего переводчика, это может создать проблему. Но в этом случае я должен предупредить вас, что технические переводы специфичны : переводчики должны по крайней мере подчиняться общепринятым терминам программного обеспечения.
ОК, теперь на почему это зависит . По сути, форматирование строк с помощью string.Format () фактически является конкатенацией. Как я уже сказал, если у вас есть динамические данные, у вас нет выбора. Но если ваши данные статичны, и у вас всего несколько комбинаций, вы никогда не должны ни при каких обстоятельствах использовать заполнители (ни простые конкатенации строк с оператором конкатенации (+), ни более сложные с StringBuilder). Для статических данных вам просто нужно создать столько строк, сколько нужно.
Настоящая причина этого в том, что многие языки нуждаются в разных формах перевода в зависимости от контекста. Например, на языке моей матери (польский) мы используем различные формы женских и мужских существительных.
Это не просто теоретическая проблема: 4 года назад, когда я работал над локализацией, нам пришлось локализовать новое основное антивирусное программное обеспечение. Проблема была в том, что какой-то программист оптимизировал ресурсы, так что у нас было одно сообщение, похожее на это:
The {0} is inactive. To activate {0} click...
То, что было подставлено вместо заполнителя, было именем функции или программы. По-польски функция - женская, по программе - мужская. Что еще хуже, наш лингвист хотел добавить слова «программа» и «funkcja», в зависимости от того, что на самом деле было неактивно.
Очевидно, что мы (инженеры по локализации программного обеспечения) не смогли исправить проблему, не касаясь кода (что нам было запрещено делать, но это другая история ...).
Подведем итог:
Используйте заполнители, если вам действительно нужно. Дисковое пространство дешево. Избегайте конкатенаций (так как это не позволит переупорядочить переведенное предложение).
Не беспокойтесь о переводчике, но не забывайте давать им контекст (возможно, также инструкции). Для них важно знать , где будет отображаться ваша строка и , какие являются возможными значениями.