• Guest
HabraHabr
  • Main
  • Users

  • Development
    • Programming
    • Information Security
    • Website development
    • JavaScript
    • Game development
    • Open source
    • Developed for Android
    • Machine learning
    • Abnormal programming
    • Java
    • Python
    • Development of mobile applications
    • Analysis and design of systems
    • .NET
    • Mathematics
    • Algorithms
    • C#
    • System Programming
    • C++
    • C
    • Go
    • PHP
    • Reverse engineering
    • Assembler
    • Development under Linux
    • Big Data
    • Rust
    • Cryptography
    • Entertaining problems
    • Testing of IT systems
    • Testing Web Services
    • HTML
    • Programming microcontrollers
    • API
    • High performance
    • Developed for iOS
    • CSS
    • Industrial Programming
    • Development under Windows
    • Image processing
    • Compilers
    • FPGA
    • Professional literature
    • OpenStreetMap
    • Google Chrome
    • Data Mining
    • PostgreSQL
    • Development of robotics
    • Visualization of data
    • Angular
    • ReactJS
    • Search technologies
    • Debugging
    • Test mobile applications
    • Browsers
    • Designing and refactoring
    • IT Standards
    • Solidity
    • Node.JS
    • Git
    • LaTeX
    • SQL
    • Haskell
    • Unreal Engine
    • Unity3D
    • Development for the Internet of things
    • Functional Programming
    • Amazon Web Services
    • Google Cloud Platform
    • Development under AR and VR
    • Assembly systems
    • Version control systems
    • Kotlin
    • R
    • CAD/CAM
    • Customer Optimization
    • Development of communication systems
    • Microsoft Azure
    • Perfect code
    • Atlassian
    • Visual Studio
    • NoSQL
    • Yii
    • Mono и Moonlight
    • Parallel Programming
    • Asterisk
    • Yandex API
    • WordPress
    • Sports programming
    • Lua
    • Microsoft SQL Server
    • Payment systems
    • TypeScript
    • Scala
    • Google API
    • Development of data transmission systems
    • XML
    • Regular expressions
    • Development under Tizen
    • Swift
    • MySQL
    • Geoinformation services
    • Global Positioning Systems
    • Qt
    • Dart
    • Django
    • Development for Office 365
    • Erlang/OTP
    • GPGPU
    • Eclipse
    • Maps API
    • Testing games
    • Browser Extensions
    • 1C-Bitrix
    • Development under e-commerce
    • Xamarin
    • Xcode
    • Development under Windows Phone
    • Semantics
    • CMS
    • VueJS
    • GitHub
    • Open data
    • Sphinx
    • Ruby on Rails
    • Ruby
    • Symfony
    • Drupal
    • Messaging Systems
    • CTF
    • SaaS / S+S
    • SharePoint
    • jQuery
    • Puppet
    • Firefox
    • Elm
    • MODX
    • Billing systems
    • Graphical shells
    • Kodobred
    • MongoDB
    • SCADA
    • Hadoop
    • Gradle
    • Clojure
    • F#
    • CoffeeScript
    • Matlab
    • Phalcon
    • Development under Sailfish OS
    • Magento
    • Elixir/Phoenix
    • Microsoft Edge
    • Layout of letters
    • Development for OS X
    • Forth
    • Smalltalk
    • Julia
    • Laravel
    • WebGL
    • Meteor.JS
    • Firebird/Interbase
    • SQLite
    • D
    • Mesh-networks
    • I2P
    • Derby.js
    • Emacs
    • Development under Bada
    • Mercurial
    • UML Design
    • Objective C
    • Fortran
    • Cocoa
    • Cobol
    • Apache Flex
    • Action Script
    • Joomla
    • IIS
    • Twitter API
    • Vkontakte API
    • Facebook API
    • Microsoft Access
    • PDF
    • Prolog
    • GTK+
    • LabVIEW
    • Brainfuck
    • Cubrid
    • Canvas
    • Doctrine ORM
    • Google App Engine
    • Twisted
    • XSLT
    • TDD
    • Small Basic
    • Kohana
    • Development for Java ME
    • LiveStreet
    • MooTools
    • Adobe Flash
    • GreaseMonkey
    • INFOLUST
    • Groovy & Grails
    • Lisp
    • Delphi
    • Zend Framework
    • ExtJS / Sencha Library
    • Internet Explorer
    • CodeIgniter
    • Silverlight
    • Google Web Toolkit
    • CakePHP
    • Safari
    • Opera
    • Microformats
    • Ajax
    • VIM
  • Administration
    • System administration
    • IT Infrastructure
    • *nix
    • Network technologies
    • DevOps
    • Server Administration
    • Cloud computing
    • Configuring Linux
    • Wireless technologies
    • Virtualization
    • Hosting
    • Data storage
    • Decentralized networks
    • Database Administration
    • Data Warehousing
    • Communication standards
    • PowerShell
    • Backup
    • Cisco
    • Nginx
    • Antivirus protection
    • DNS
    • Server Optimization
    • Data recovery
    • Apache
    • Spam and antispam
    • Data Compression
    • SAN
    • IPv6
    • Fidonet
    • IPTV
    • Shells
    • Administering domain names
  • Design
    • Interfaces
    • Web design
    • Working with sound
    • Usability
    • Graphic design
    • Design Games
    • Mobile App Design
    • Working with 3D-graphics
    • Typography
    • Working with video
    • Work with vector graphics
    • Accessibility
    • Prototyping
    • CGI (graphics)
    • Computer Animation
    • Working with icons
  • Control
    • Careers in the IT industry
    • Project management
    • Development Management
    • Personnel Management
    • Product Management
    • Start-up development
    • Managing the community
    • Service Desk
    • GTD
    • IT Terminology
    • Agile
    • Business Models
    • Legislation and IT-business
    • Sales management
    • CRM-systems
    • Product localization
    • ECM / EDS
    • Freelance
    • Venture investments
    • ERP-systems
    • Help Desk Software
    • Media management
    • Patenting
    • E-commerce management
    • Creative Commons
  • Marketing
    • Conferences
    • Promotion of games
    • Internet Marketing
    • Search Engine Optimization
    • Web Analytics
    • Monetize Web services
    • Content marketing
    • Monetization of IT systems
    • Monetize mobile apps
    • Mobile App Analytics
    • Growth Hacking
    • Branding
    • Monetize Games
    • Display ads
    • Contextual advertising
    • Increase Conversion Rate
  • Sundry
    • Reading room
    • Educational process in IT
    • Research and forecasts in IT
    • Finance in IT
    • Hakatonas
    • IT emigration
    • Education abroad
    • Lumber room
    • I'm on my way

Разделение кода и текста: мысли вслух / Хабр

Код, который большинство из нас пишет, как правило содержит ещё текст – разные элементы интерфейса, описания, содержание имейлов и так далее. Но мы, программисты, не все получали пятёрки в школе за сочинение. Мы хорошо пишем код, но далеко не каждый из нас хорош в прозе.В итоге мы видим тысячи сайтов и приложений, которые говорят с пользователями на неестественном языке вроде: “Использованы запрещенные символы” или “Операция успешно завершена”. Как часто вам в жизни, на улице говорят такие фразы? Разделение кода и текста: мысли вслух / ХабрА что если попробовать разделить код (логику) и текст? Крупные компании, наверняка, уже давно это делают, используя какие-то свои собственные решения, но для всех остальных - нет никакой готовой утилиты или фреймворка.

Реальность

Текущая реальность такова, что программист частично сам пишет тексты (допустим, названия кнопок), частично берет тексты из заданий. Это является частью репозитория - хранится вместе с кодом, а значит если кому-то в команде надо будет что-то поправить - надо делать коммит в репозиторий. Не совсем идеально - это же не логика, это просто кусок текста?
@extends('layouts.main')

@section('contents')

Welcome home


We are thrilled to have you back, {{ $user->first_name }}

Download my money

@endsection[/code]

Проблемы


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

Альтернатива

А что если бы каждый новый кусок текста автоматически уходил в какой-то внешний сервис, и дальше содержание этого и других текстов уже контроллировалось напрямую из специального сервиса.
Программист добавил одну строку в шаблон home.blade.php (пример на PHP и фреймворке Laravel, но это подходит к любому языку и фреймворку)
Во время билда внешний сервис был извещен, что на такой-то строке в таком-то шаблоне новый кусок текста.
Нетехнические члены команды могут сами редактировать этот текст теперь, без помощи программистов. В код при этом никому лезть не надо.
Во время билда будут загружены все тексты из внешнего сервиса. Если для какого-то текста появился “уточненный” вариант - используется он, иначе по умолчанию - то что ввел программист.
Если проводить параллель с тем же Laravel, то это похоже на использование встроенной функции для переводов __(), но тексты хранятся не в локальных файлах внутри этого же репозитория, а в облаке, что создает целый ряд преимуществ.

Технические аспекты

Гипотетическая реализация могла бы выглядеть следующим образом (за пример опять возьмем фреймворк Laravel на PHP).
Обязываем программистов вместо прямой вставки текстов, использовать вспомогательную функцию - оборачивать все тексты. Можно даже добавить проверку автоматическую, что все тексты обернуты, иначе не давать пулл-реквесту пройти.
Реализуем консольную команду, которая отправляет все тексты завернутые в эту функцию по API куда-то во вне, в сервис управления текстами. Помимо текстов отправляются важные данные о контексте - в каком шаблоне текст, на каких строках, в каких маршрутах этот шаблон используется и так далее. Эта команда автоматически запускается в определенных моментах, например во время CI/CD билда.
Реализуем консольную команду, которая загружает новые версии текстов через API. Наша вспомогательная функция будет на лету заменять старый текст от программиста новой версией от других сотрудников компании - сотрудников, которые лучше пишут. Эта команда также может автоматически запускаться во время билда.
Создаем вэб-админку, где можно управлять всеми текстами нашего продукта. Видно что мы говорим и когда. В идеале - с рендерами. Теперь product manager, да и любой другой член команды, может отследить коммуникации от регистрации пользователя до любого действия.
Гипотетическая админка:Шаблон, приведенный выше, превращается в что-то вроде:
@extends('layouts.main')

@section('contents')

@lang('Welcome home')


@lang("We are thrilled to have you back, {$user->first_name}")

@lang('Download my money')

@endsection[/code]

Дополнительные плюсы

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

Заключение

Хотелось бы услышать мнения других разработчиков - как позитивные, так и жесточайшую критику. В теории такой SaaS сервис мог бы иметь бесплатную open-source реализацию, где команда хостит всё сама, и опциональный платный сервис, где можно заказывать переводы, проверку орфографии и так далее.

It may be interesting

  • Comments
  • About article
  • Similar news
Legend SEO 20 December 2020 11:05

You understand your projects stand out of the crowd. There is something unique about them. It seems to me all of them are brilliant. soap2day movies
Legend SEO 22 December 2020 10:17
I think this is an informative post and it is very beneficial and knowledgeable. Therefore, I would like to thank you for the endeavors that you have made in writing this article. All the content is absolutely well-researched. Thanks ... fnreviews.net
Paulojimmathew 23 December 2020 09:24
This is a really perfect for a new blogger like me who doesn't want their site to be messy with those spammers who don't even read your post but they have the guts to comment in your site. Thanks again.
Speaking of site, take a look at here: บาคาร่า บาคาร่า บาคาร่า บาคาร่า บาคาร่า
jackiedcruz720 31 December 2020 14:39
Hey? everybody hopes you are fine. the writer is giving a very useful read. moreover, if you want to grow your Instagram profile. then read 
How to open an account on Instagram? and advantages?


jackiedcruz720 5 January 2021 12:31
Yes, I am entirely agreed with this article, and I just want say that this article is very helpful and enlightening.
I also have some precious piece of concerned info !!!!!!Thanks
I have another informative writing for you. must read How to get Instagram followers for free

r7npleb928

Author

20-12-2020, 07:08

Publication Date

PHP / Laravel

Category
  • Comments: 5
  • Views: 114
Локализационное тестирование: зачем оно
Полюбите во мне программиста / Хабр
Apple открыла исходные тексты Swift
Иерархия компьютерных информационных
Как я, специалист по ИИ, на ИИ-текст
Маленькое удобство, способное
Write a comment
Name:*
E-Mail:


Comments
Thorough and trustworthy home inspection services for Hampton Roads. At First Glance, we inspect and treat your home as if it was our family moving in. Check out: Home Inspection Company
Yesterday, 23:05

stgenevive

Buy the best Natural Hand-Carved Human Head stone skull at soulcharms for chakra balancing, reiki energy healing, meditation, yoga, stress, anxiety depression
Yesterday, 20:22

raymond weber

Nice post! This is a very nice blog that I will definitively come back to more times this year! Thanks for informative post.Torrance Tax Accountant

Yesterday, 15:51

raymond weber

Someone Sometimes with visits your blog regularly and recommended it in my experience to read as well. The way of writing is excellent and also the content is top-notch. Thanks for that insight you provide the readers! 123movies websites 
Yesterday, 15:21

Legend SEO

Extremely intriguing online journal. A lot of web journals I see nowadays don't generally give anything that I'm keen on, however I'm most definitely inspired by this one. Recently felt that I would post and let you know.먹튀

Yesterday, 15:14

raymond weber

Adv
Website for web developers. New scripts, best ideas, programming tips. How to write a script for you here, we have a lot of information about various programming languages. You are a webmaster or a beginner programmer, it does not matter, useful articles will help to make your favorite business faster.

Login

Registration Forgot password